我正在使用Android Camera2 API为应用程序拍摄照片,但在大多数三星Galaxy设备(Galaxy S6 Edge、Galaxy S7、Galaxy J7)上无法正确使用闪光灯。我相信我已经正确实现了闪光灯逻辑,因为曾经在Play商店上发布的Google相机应用程序也表现出相同的行为。虽然Galaxy S8的结果光线不稳定,但似乎使用闪光灯还可以正常工作。
Galaxy J7存在的问题是,当我使用闪光灯拍摄照片(无论是锁定闪光灯还是在需要闪光的场景中使用自动闪光),闪光灯会持续很长时间,预览将被锁定,然后大约7秒后才会拍摄照片,而且闪光灯没有出现在图像中。
我有以下方法来处理闪光模式:
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行注释掉的代码是我读到的建议可以帮助我使闪光灯正常工作,但似乎没有任何作用。
三星有自己的相机API(http://developer.samsung.com/galaxy/camera),但我看到它只是Camera2的一个包装器,我担心他们的API甚至不能解决我的问题。
其他信息:
- 我尝试过一些来自Play Store的相机应用,有些能用,有些不能用。
- ZCamera的闪光灯功能很好,这让我想到他们使用了三星的相机API来使其正常工作,但后来我发现ZCamera在三星设备上的触摸测光不起作用,这是我在调试Camera2实现时遇到的另一个问题。
- 如果我坚持使用已弃用的Camera API,则闪光灯似乎可以正常工作。
非常感谢提供有关如何实现工作闪光灯的任何帮助。