本篇我们对光线暗淡情况下闪光灯的使用做出介绍。

效果
晚上测试时:

开灯后:

未开灯:

实现步骤
1、在activity_scanner.xml界面上加上闪光灯开关按钮。可以是Button、Checkbox等控件。

    ...                                


编辑区域预览


2、修改com.google.zxing.camera.CameraManager类,添加setFlashLight方法。

/**     * 打开或关闭闪光灯     * @param isOpen 是否开启闪光灯     * @return boolean 操作成功/失败。     */    public boolean setFlashLight(boolean isOpen) {        if (camera == null || !previewing) {            return false;        }        Camera.Parameters parameters = camera.getParameters();        if (parameters == null) {            return false;        }        List flashModes = parameters.getSupportedFlashModes();        // 检查手机是否有闪光灯        if (null == flashModes || 0 == flashModes.size()) {            // 没有闪光灯则返回            return false;        }        String flashMode = parameters.getFlashMode();        if (isOpen) {            if (Camera.Parameters.FLASH_MODE_TORCH.equals(flashMode)) {                return true;            }            // 开启            if (flashModes.contains(Camera.Parameters.FLASH_MODE_TORCH)) {                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);                camera.setParameters(parameters);                return true;            } else {                return false;            }        } else {            if (Camera.Parameters.FLASH_MODE_OFF.equals(flashMode)) {                return true;            }            // 关闭            if (flashModes.contains(Camera.Parameters.FLASH_MODE_OFF)) {                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);                camera.setParameters(parameters);                return true;            } else {                return false;            }        }    }


3、在com.google.zxing.activity.CaptureActivity类中添加闪光灯开关相关代码。

btnFlash = (ImageButton) findViewById(R.id.btn_flash);btnFlash.setOnClickListener(flashListener);/** *  闪光灯开关按钮 */private View.OnClickListener flashListener = new View.OnClickListener() {    @Override    public void onClick(View view) {        try {            boolean isSuccess = CameraManager.get().setFlashLight(!isFlashOn);            if(!isSuccess){                Toast.makeText(CaptureActivity.this, "暂时无法开启闪光灯", Toast.LENGTH_SHORT).show();                return;            }            if (isFlashOn) {                // 关闭闪光灯                btnFlash.setImageResource(R.drawable.flash_off);                isFlashOn = false;            } else {                // 开启闪光灯                btnFlash.setImageResource(R.drawable.flash_on);                isFlashOn = true;            }        }catch (Exception e){            e.printStackTrace();        }    }};


运行即可查看效果。

更多相关文章

  1. Android(安卓)GPS定位实现
  2. Android(安卓)surfaceview 自定义相机 拍照(闪光灯、前后摄像头)
  3. Android(安卓)应用通知权限是否开启以及跳转到设置界面
  4. android打开闪光灯
  5. Android蓝牙的开启-搜索-关闭演示
  6. 自定义开关按钮
  7. SwitchButton自定义开关
  8. 使用照相机开启闪光灯
  9. Android开启Java8

随机推荐

  1. Android(安卓)NDK开发之Hello world篇
  2. Android在XML中自定义控件的使用
  3. Android(安卓)7+的一些报错
  4. AndroidStudio 设置signingConfigs让编译
  5. SEAndroid简介
  6. android WindowManager 应用内部悬浮窗口
  7. 为什么比起 Metro 我更喜欢 Holo
  8. Android——UI篇:ViewPager轮播图控制滑动
  9. 如何改变Android(安卓)Progressbar默认颜
  10. Android(安卓)Recovery 模式