【问题标题】:setTorchMode() minimizes the app and is not turning on FlashsetTorchMode() 最小化应用程序并且不打开 Flash
【发布时间】:2017-10-28 14:22:32
【问题描述】:

我对Android只有一点经验,并且有以下sn-p:

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

应该打开背面相机上的闪光灯(理想情况下)。这个 sn-p 在onClickListener 中执行。当cameraManager.setTorchMode(cameraId, true); 被执行时,应用程序被最小化(我可以看到它仍在运行 - 没有崩溃)但没有打开闪光灯。

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

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

但是已经详尽地尝试了所有选项并且迫切需要解决方案。提前致谢。

【问题讨论】:

    标签: android android-5.0-lollipop


    【解决方案1】:
    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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      • 1970-01-01
      相关资源
      最近更新 更多