gpt4 book ai didi

java - Android Camera2 API Flash 不适用于银河设备

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:41:26 25 4
gpt4 key购买 nike

我正在使用 Android Camera2 API 为应用拍照,但我无法让闪光灯在大多数三星 Galaxy 设备(galaxy s6 edge、galaxy s7、galaxy j7)上正常工作。我相信我已经正确地实现了 flash 逻辑,因为曾经在 Play 商店中的 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 似乎可以正常工作

任何关于如何完成工作闪光的帮助将不胜感激

最佳答案

实际上在android设备中使用camera2 API是非常特殊的。有些方法可能无法实现。例如:thisthis .对于其他人,应根据其他属性设置适当的闪光模式。此代码适用于大多数支持 camera2API 的三星设备:

 if (mIsFlashSupported) {
switch (mFlashMode) {
case FLASH_MODE_ON:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_SINGLE);
requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_FLUORESCENT);
break;

case FLASH_MODE_OFF:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_OFF);
requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT);
break;

case FLASH_MODE_AUTO:
default:
requestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON_AUTO_FLASH);
requestBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_SINGLE);
requestBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT);
break;
}
}

关于java - Android Camera2 API Flash 不适用于银河设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44529910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com