setTorchMode()最小化了应用程序并且没有打开Flash

时间:2017-10-28 14:22:33

标签: android android-5.0-lollipop

我对Android只有一点经验,并且有以下代码段:

String cameraId = cameraManager.getCameraIdList()[1]; System.out.println(cameraId); cameraManager.setTorchMode(cameraId, true);

应打开后侧相机上的闪光灯(理想情况下)。此代码段在onClickListener中执行。当cameraManager.setTorchMode(cameraId, true);被执行时,应用程序被最小化(我可以看到它仍然在运行 - 没有崩溃)但闪存没有打开。

在尝试添加额外检查闪光灯是否可用等选项后,我几乎筋疲力尽。该项目是为Jellybean + Android版本设置的。测试手机是Lollipop 5.0.2。

我知道这个问题可能与以下内容重复: How to open device flashlight in Android N?

但是已经详尽地尝试了每一个选项,并迫切需要一个解决方案。提前谢谢。

1 个答案:

答案 0 :(得分:0)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        mCameraManager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
        try {
            for (String camID : mCameraManager.getCameraIdList()) {
                CameraCharacteristics cameraCharacteristics = mCameraManager.getCameraCharacteristics(camID);
                int lensFacing = cameraCharacteristics.get(CameraCharacteristics.LENS_FACING);
                if (lensFacing == CameraCharacteristics.LENS_FACING_BACK 
                        && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                    mCameraId = camID;
                    break;
                }
            }
            if (mCameraId != null) {
                mCameraManager.setTorchMode(mCameraId, true);
            }
        } catch (CameraAccessException e) {
            e.printStackTrace();
        }
    }

mCameraId将打开相机闪光灯。如果设备没有闪存硬件,则mCameraId将为null,并且不会在上面的代码中调用setTorchMode。