首先閃光燈可以用android.hardware.camera來控制。
1.添加權限
1 <uses-permission android:name="android.permission.FLASHLIGHT" /> 2 3 <uses-permission android:name="android.permission.CAMERA"/> 4 5 <uses-feature android:name="android.hardware.camera" />
2.獲得Camera對象,通過Camera.open()開啟攝像頭。
Camera camera = Camera.open();
3.打開閃光燈
1 public static void turnLightOn(Camera mCamera) { 2 if (mCamera == null) { 3 return; 4 } 5 Parameters parameters = mCamera.getParameters(); 6 if (parameters == null) { 7 return; 8 } 9 List<String> flashModes = parameters.getSupportedFlashModes(); 10 // Check if camera flash exists 11 if (flashModes == null) { 12 // Use the screen as a flashlight (next best thing) 13 return; 14 } 15 String flashMode = parameters.getFlashMode();
16 if (!Parameters.FLASH_MODE_TORCH.equals(flashMode)) { 17 // Turn on the flash 18 if (flashModes.contains(Parameters.FLASH_MODE_TORCH)) { 19 parameters.setFlashMode(Parameters.FLASH_MODE_TORCH); 20 mCamera.setParameters(parameters); 21 } else { 22 } 23 } 24 }
4.關閉閃光燈
1 public static void turnLightOff(Camera mCamera) { 2 if (mCamera == null) { 3 return; 4 } 5 Parameters parameters = mCamera.getParameters(); 6 if (parameters == null) { 7 return; 8 } 9 List<String> flashModes = parameters.getSupportedFlashModes(); 10 String flashMode = parameters.getFlashMode(); 11 // Check if camera flash exists 12 if (flashModes == null) { 13 return; 14 } 15 if (!Parameters.FLASH_MODE_OFF.equals(flashMode)) { 16 // Turn off the flash 17 if (flashModes.contains(Parameters.FLASH_MODE_OFF)) { 18 parameters.setFlashMode(Parameters.FLASH_MODE_OFF); 19 mCamera.setParameters(parameters); 20 } else { 21 Log.e(TAG, "FLASH_MODE_OFF not supported"); 22 } 23 } 24 }
5.關閉閃光燈后記得釋放Camear對象
camera.release();
源代碼:Flashlight.7z