首先闪光灯可以用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 exists11     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 flash18 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 exists12   if (flashModes == null) {13     return;14   }15   if (!Parameters.FLASH_MODE_OFF.equals(flashMode)) {16   // Turn off the flash17    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

更多相关文章

  1. Android 多线程之synchronized锁住的是代码还是对象(二)
  2. Android Handler机制5之Message简介与消息对象对象池
  3. Android 开启闪光灯做手电筒 源码
  4. Android 对象序列化之你不知道的 Serializable
  5. Android 对象序列化之 Parcelable 取代 Serializable ?
  6. Android 对象序列化之追求完美的 Serial
  7. 带你了解CLR是如何创建运行时对象?
  8. lambda表达式进行对象结合操作的实例详解
  9. 值类型对象的两种表示形式

随机推荐

  1. android后台服务service全解析(上)--serv
  2. Android中解析XML
  3. Android(安卓)studio删除工程项目
  4. android中的binder通信机制
  5. Android(安卓)数字签名
  6. Android(安卓)Binder 框架层详解
  7. Android(安卓)ActionBar的源代码分析(二)
  8. Android最实用的各种技能点的网址链接(每
  9. Android(安卓)UI 控件 和 对应监听器详细
  10. 安卓系统结构