目录

  • 1.控制手电筒开关的工具类:
  • 2.使用方法:
  • 3.示例程序已上传:

1.控制手电筒开关的工具类:

public class FlashUtils {    private CameraManager manager;    private Camera mCamera = null;    private Context context;    private boolean status = false;//记录手电筒状态    FlashUtils(Context context){        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {            manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);        }        this.context = context;    }    //打开手电筒    public void open() {        if(status){//如果已经是打开状态,不需要打开            return;        }        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            try {                manager.setTorchMode("0", true);            } catch (Exception e) {                e.printStackTrace();            }        } else {            PackageManager packageManager = context.getPackageManager();            FeatureInfo[] features = packageManager.getSystemAvailableFeatures();            for (FeatureInfo featureInfo : features) {                if (PackageManager.FEATURE_CAMERA_FLASH.equals(featureInfo.name)) { // 判断设备是否支持闪光灯                    if (null == mCamera) {                        mCamera = Camera.open();                    }                    Camera.Parameters parameters = mCamera.getParameters();                    parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);                    mCamera.setParameters(parameters);                    mCamera.startPreview();                }            }        }        status = true;//记录手电筒状态为打开    }    //关闭手电筒    public void close() {        if(!status){//如果已经是关闭状态,不需要打开            return;        }        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            try {                manager.setTorchMode("0", false);            } catch (CameraAccessException e) {                e.printStackTrace();            }        } else {            if (mCamera != null) {                mCamera.stopPreview();                mCamera.release();                mCamera = null;            }        }        status = false;//记录手电筒状态为关闭    }    //改变手电筒状态    public void converse(){        if(status){            close();        }else{            open();        }    }}

2.使用方法:

FlashUtils utils = new FlashUtils(this);        utils.open();//打开手电筒//        utils.close();//关闭手电筒

3.示例程序已上传:

https://github.com/wkxjc/FlashlightStudy

更多相关文章

  1. android电源管理简要
  2. 4.11笔记 android database打开方式,ios反射
  3. android6.0 状态栏添加图标 举例Location
  4. android studio的Gradle一直在sync的办法,不停的下载各种文件
  5. android 之activity生命周期(转载)
  6. Android的生命周期 Start onResume
  7. Android仿照淘宝,京东,当当购物平台
  8. Android在listview添加checkbox实现单选多选操作问题
  9. Android(安卓)保存和恢复activity的状态数据

随机推荐

  1. android 电容屏(三):驱动调试之驱动程序分析
  2. 【移动开发】Android中Fragment+ViewPage
  3. ListView、Fragment 消除上拉底部阴影
  4. Android有用代码片段(三)
  5. android TextView的字体颜色设置的多种方
  6. Android视频播放 的几种方式
  7. 详解android:scaleType属性
  8. android 夜间模式
  9. android AMS
  10. Android程序结构解析