整合了个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-- 输入法键盘控制
  2. android studio 关闭log 打印
  3. Android中网络使用
  4. Android之手机振动的设置
  5. Andriod开发之浏览器开发(WebView)
  6. android9.0 关闭launcher界面的搜索框
  7. android 刚进入activity 时关闭输入法
  8. Android(安卓)Studio安装app 报错的问题It is possible that thi
  9. Android(安卓)EditText 代码实现键盘弹出打开和关闭工具类

随机推荐

  1. MySQL如何利用DCL管理用户和控制权限
  2. MySQL基于java实现备份表操作
  3. mysql中find_in_set函数的基本使用方法
  4. 在IntelliJ IDEA中使用Java连接MySQL数据
  5. MySQL8.0中的降序索引
  6. 详解mysql中的存储引擎
  7. MySQL 两种恢复数据的方法
  8. MySQL 8.0 之索引跳跃扫描(Index Skip Sc
  9. mysql的登陆和退出命令格式
  10. MySql设置指定用户数据库查看查询权限