我正在使用 Android Camera2 API 为应用程序拍照,但我无法让闪光灯在大多数三星 Galaxy 设备(galaxy s6 edge、galaxy s7、galaxy j7)上正常工作。我相信我已经正确实现了 Flash 逻辑,因为曾经在 Play Store 上的 Google 相机应用程序也表现出相同的行为。此外,galaxy s8 似乎可以很好地使用闪光灯(尽管结果肯定有不一致的照明)
Galaxy j7的问题是当我用闪光灯拍照时(在需要闪光灯的场景中锁定闪光灯或使用自动闪光灯)闪光灯会保持很长时间,预览会锁定,然后图像可能需要 7 秒,并且闪光灯不是图像的一部分。
我有以下处理闪光模式的方法:
private void setAutoFlash(CaptureRequest.Builder requestBuilder)
{
switch (mFlashState)
{
case FLASH_STATE_AUTO:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);
//requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
break;
case FLASH_STATE_ON:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON_ALWAYS_FLASH);
//requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_SINGLE);
break;
case FLASH_STATE_OFF:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
//requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
break;
}
}
每次需要 CaptureRequest.Builder 时都会调用此闪存逻辑
被注释掉的 3 行是我读到的其他内容,建议帮助 flash 为我正常工作,但它似乎没有做任何事情
三星有自己的相机 API(http://developer.samsung.com/galaxy/camera),但我读到它只是 Camera2 的包装,我担心他们的 API 甚至无法解决我的问题。
附加信息:
- 我尝试了 Play 商店中的一些相机应用程序,有些工作,有些则没有。
- ZCamera 与闪光灯配合得很好,这让我觉得他们使用三星的相机 API 来让它工作,但后来我注意到 ZCamera 的触摸测光在三星设备上不起作用,这是我在调试 Camera2 实现时遇到的另一个问题。
- 如果我坚持使用已弃用的 Camera API,Flash 似乎可以正常工作
任何有关如何完成工作闪存的帮助将不胜感激