Android实现二维码扫描功能(三)-闪光灯控制
16lz
2021-01-26
本篇我们对光线暗淡情况下闪光灯的使用做出介绍。
效果
晚上测试时:
开灯后:
未开灯:
实现步骤
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(); } }};
运行即可查看效果。
更多相关文章
- Android(安卓)GPS定位实现
- Android(安卓)surfaceview 自定义相机 拍照(闪光灯、前后摄像头)
- Android(安卓)应用通知权限是否开启以及跳转到设置界面
- android打开闪光灯
- Android蓝牙的开启-搜索-关闭演示
- 自定义开关按钮
- SwitchButton自定义开关
- 使用照相机开启闪光灯
- Android开启Java8