1ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall/*
2ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * Copyright 2014 The Android Open Source Project
3ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall *
4ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * Licensed under the Apache License, Version 2.0 (the "License");
5ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * you may not use this file except in compliance with the License.
6ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * You may obtain a copy of the License at
7ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall *
8ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall *       http://www.apache.org/licenses/LICENSE-2.0
9ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall *
10ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * Unless required by applicable law or agreed to in writing, software
11ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * distributed under the License is distributed on an "AS IS" BASIS,
12ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * See the License for the specific language governing permissions and
14ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall * limitations under the License.
15ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall */
16ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
17ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallpackage com.example.android.powerprofile.cameraflashlight;
18ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
19ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallimport android.app.Activity;
20ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallimport android.content.Context;
21ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallimport android.hardware.camera2.CameraAccessException;
22ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallimport android.hardware.camera2.CameraCharacteristics;
23ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallimport android.hardware.camera2.CameraManager;
24ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallimport android.os.Bundle;
25ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
26ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wallpublic class FlashlightActivity extends Activity {
27ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
28ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    private CameraManager mCameraManager;
29ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    private String mCameraId;
30ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
31ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    protected void onCreate(Bundle savedInstanceState) {
32ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        super.onCreate(savedInstanceState);
33ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
34ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        try {
35ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            mCameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
36ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
37ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            for (String cameraId: mCameraManager.getCameraIdList()) {
38ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                Boolean flashAvailable = mCameraManager.getCameraCharacteristics(cameraId).
39ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                        get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
40ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                if (flashAvailable != null && Boolean.TRUE.equals(flashAvailable)) {
41ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                    mCameraId = cameraId;
42ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                    break;
43ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                }
44ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            }
45ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        } catch (CameraAccessException e) {
46ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            e.printStackTrace();
47ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        }
48ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    }
49ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
50ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    @Override
51ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    protected void onResume() {
52ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        super.onResume();
53ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
54ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        try {
55ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            if (mCameraId != null) {
56ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                mCameraManager.setTorchMode(mCameraId, true);
57ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            }
58ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        } catch (CameraAccessException e) {
59ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            e.printStackTrace();
60ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        }
61ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    }
62ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
63ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    @Override
64ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    protected void onPause() {
65ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        super.onPause();
66ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
67ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        try {
68ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            if (mCameraId != null) {
69ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall                mCameraManager.setTorchMode(mCameraId, false);
70ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            }
71ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        } catch (CameraAccessException e) {
72ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall            e.printStackTrace();
73ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall        }
74ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall    }
75ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall
76ab8424590aa8e82e5d756b646220c6ecbf1bb171Marissa Wall}
77