使用 camera2 检查可用的前置闪光灯 API

Check front flash available using camera2 API

我正在三星 J7 Pro 上测试我的相机应用程序,它有 前置闪光灯(真正的硬件 LED 闪光灯)。当我检查 front flash 可用于已弃用的 Camera API 使用:

List<String> supportFlashModes = defaultParameters.getSupportedFlashModes();
boolean isSupportedFlashMode = (supportFlashModes != null && supportFlashModes.contains(Camera.Parameters.FLASH_MODE_ON));

它工作正常,支持的闪光灯模式 return 前置摄像头的 4 个值(开、关、auto_flash、always_flash)。

但是当我检查新的 Camera2 API 时使用:

Boolean b = characteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE);
boolean isSupportedFlashMode = b != null ? b : false;

isSupportedFlashMode 总是 return false 用于前置摄像头。如果我使用以下方法检查支持的闪光灯模式:

characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES);

它也是 return 只有 2 个值(ae_on、ae_off)。

有谁知道如何解决这个问题?请注意,我只想检查设备 前置闪光灯 的可用性。谢谢。

更新

这些方法在我的 Q-Mobile 设备(也有一个真正的 LED 前置闪光灯)上工作得很好,但在三星 J7 Pro 上仍然不起作用。不知道为什么?

看来是设备相关的问题。我公司使用 camera2 API 的应用程序也面临同样的问题。

我已经尝试用一个简单的示例对其进行测试,OpenCamera 但其中 none 有效。然后我决定把这个bug搁置到现在,因为有前置闪光灯的设备数量很少,而且大多数都工作正常。