【问题标题】:How to control camera flash light with camera2 API如何使用 camera2 API 控制相机闪光灯
【发布时间】:2015-07-17 01:36:30
【问题描述】:

我想使用 camera2 API 控制智能手机 (Galaxy s6) 的闪光灯。

我检查了它是否可以通过这样的代码使用,

try {
    CameraManager mManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
    String [] cameraId = mManager.getCameraIdList();
    CameraCharacteristics cameraCharacteristics = mManager.getCameraCharacteristics(cameraId[1]);
    Toast.makeText(getApplicationContext(),cameraId[0]+cameraId[1],Toast.LENGTH_LONG).show();
    boolean flashAvailable = cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
    if (flashAvailable) {
        mManager.openCamera(cameraId[0], new MyStateCallback(), null);
        Toast.makeText(getApplicationContext(),"Flash is available",Toast.LENGTH_LONG).show();
    } else {
        //todo: throw Exception
        Toast.makeText(getApplicationContext(),"Flash is not available",Toast.LENGTH_LONG).show();
    }
} catch (Exception e) {
    e.printStackTrace();
}

但是,Toast 消息:Flash 不可用。

当然,我在清单中声明了权限和硬件功能。

这个设备或camera2 API无法控制闪光灯吗?

【问题讨论】:

    标签: flash camera galaxy flashlight


    【解决方案1】:

    您正在检查第二个摄像头(可能是前置摄像头)是否有闪光灯,因为您在第 4 行获取的是 cameraId[1] 而不是 cameraId[0] 的摄像头特征。

    通常情况下,后置摄像头排在第一位,并且是带有闪光灯的摄像头。 为了更加稳健,遍历所有相机 ID 并检查其中是否有闪光灯。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多