【问题标题】:Torch / Flashlight app (android.hardware.camera is deprecated)手电筒/手电筒应用(android.hardware.camera 已弃用)
【发布时间】:2016-05-20 20:22:08
【问题描述】:

我有一个使用此代码的手电筒/手电筒应用程序

开启

    params = camera.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_TORCH);
    camera.setParameters(params);
    camera.startPreview();

关闭

    params = camera.getParameters();
    params.setFlashMode(Parameters.FLASH_MODE_OFF);
    camera.setParameters(params);
    camera.stopPreview();

现在

android.hardware.Camera 已弃用,建议改用新的 camera2 api。

关于如何使用camera2 打开/关闭设备的手电筒有什么帮助吗?

感谢您的帮助

【问题讨论】:

    标签: java android android-camera deprecated flashlight


    【解决方案1】:

    首先,已弃用的 android.hardware.Camera API 仍然可以正常工作,如果您需要支持早于 5.0 Lollipop 的 Android 版本,您仍然需要使用它。

    最新的 Android 版本(Android Marshmallow 或更新版本)最简单的选择是新的直接手电筒控制:CameraManager.setTorchMode

    使用非常简单,不需要摄像头权限。

    所以我会推荐以下内容:

    Pre-API 23,使用已弃用的 Camera API 和您现有的方法(不要忘记设置预览显示,虚拟 SurfaceTexture 最简单)。您将需要相机权限和运行时权限请求处理。

    API 23 或更高版本,使用 setTorchMode 调用,您甚至不需要请求任何特定的运行时权限。

    【讨论】:

      【解决方案2】:
      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_FRONT
                              && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                          mCameraId = camID;
                          break;
                      } else if (lensFacing == CameraCharacteristics.LENS_FACING_BACK
                              && cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE)) {
                          mCameraId = camID;
                      }
                      if (mCameraId != null) {
                          mCameraManager.setTorchMode(mCameraId, true);
                      }
                  }
              } catch (CameraAccessException e) {
                  e.printStackTrace();
              }
          }
      

      【讨论】:

        猜你喜欢
        • 2021-08-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-17
        • 1970-01-01
        • 2021-11-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多