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