整合了个Android闪光灯工具类
API23以上使用Camera2,API23以下使用旧版的Camera。

直接上代码


import android.content.Context;import android.content.pm.PackageManager;import android.hardware.Camera;import android.hardware.camera2.CameraAccessException;import android.hardware.camera2.CameraManager;import android.os.Build;public class FlashlightHelper {    private boolean flashlightAvailable;    private Camera camera;    private CameraManager cameraManager;    private String cameraId;    public FlashlightHelper(Context context) {        flashlightAvailable = context.getApplicationContext().getPackageManager()                .hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            cameraManager = (CameraManager) context.getApplicationContext().getSystemService(Context.CAMERA_SERVICE);            try {                if (cameraManager != null) {                    cameraId = cameraManager.getCameraIdList()[0];                }            } catch (CameraAccessException e) {                e.printStackTrace();            }        }    }    /**     * 开启闪光灯     *     * @return 是否开启成功     */    public boolean open() {        if (!flashlightAvailable) {            return false;        }        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            try {                cameraManager.setTorchMode(cameraId, true);                return true;            } catch (CameraAccessException e) {                e.printStackTrace();                return false;            }        } else {            try {                camera = Camera.open();                camera.startPreview();                Camera.Parameters parameters = camera.getParameters();                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);                camera.setParameters(parameters);                return true;            } catch (Exception e) {                e.printStackTrace();                return false;            }        }    }    /**     * 关闭闪光灯     *     * @return 是否关闭成功     */    public boolean close() {        if (!flashlightAvailable) {            return false;        }        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            try {                cameraManager.setTorchMode(cameraId, false);                return true;            } catch (CameraAccessException e) {                e.printStackTrace();                return false;            }        } else {            try {                if (camera != null) {                    Camera.Parameters parameters = camera.getParameters();                    parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);                    camera.setParameters(parameters);                    camera.stopPreview();                    camera.release();                    camera = null;                } else {                    return false;                }                return true;            } catch (Exception e) {                e.printStackTrace();                return false;            }        }    }}

更多相关文章

  1. Android代码混淆一定要Export Android Application,否则不起效
  2. Android的Location功能代码
  3. 第一行代码笔记之——Activity启动模式
  4. Android:简单联网获取网页代码
  5. Android 开发笔记 - Android Studio 代码模板
  6. android源代码下载及编译
  7. android 用代码画圆
  8. android用代码实现圆角背景
  9. 小编程(三):用户登录注册界面开发及用户信息管理案例代码详解

随机推荐

  1. 海创软件组--20200712--Butterknife与自
  2. Android(安卓)Resource介绍和使用(二)
  3. Android(安卓)L Preview 源码同步方法
  4. Android获得时间总结
  5. Android——编译release版签名系统
  6. android中加载assets中的资源文件
  7. 安卓开发10:常用控件-常用表单级别控件
  8. Android(安卓)[Camera 源码] 外接 USB 摄
  9. Android常用命令总结
  10. Android之有序广播