Android Camera2 API手动曝光更改

时间:2015-05-20 09:32:07

标签: android

根据官方谷歌团队声明,在Android 5.1上,CONTROL_AE_EXPOSURE_COMPENSATION手动更改已被破坏。我找了几天的解决方法,我发现的唯一一个与SENSOR_INFO_SENSITIVITY_RANGE相关联。但是,我发现使用它有些困难。我的代码看起来像这样:

if(!modeDisabled){
                    mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
                    modeDisabled=true;
                }
                range1 = characteristics.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE);
                minmin = range1.getLower();
                maxmax = range1.getUpper();
                int iso = ((i * (maxmax - minmin)) / 100 + minmin);
                mPreviewRequestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, iso);


mCaptureSession.setRepeatingRequest(mPreviewRequestBuilder.build(), null, mBackgroundHandler);

当然'我' value是从搜索栏获取的进度值,并且在OnProgressChanged函数中关闭每个值。

问题是操作搜索栏时没有明显的变化。我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:1)

CONTROL_AE_EXPOSURE_COMPENSATION一般不会在Android 5.1中被破坏,仅在Nexus 6上被禁用(并且将在未来的更新中重新启用)。

如果您要禁用自动曝光,除了灵敏度之外,您可能还需要设置曝光时间。您最好还需要设置帧持续时间,但两者的默认值可能都是1 / 30s,这是合理的。您还可以复制自动曝光的最新捕获结果中的最新值。

那就是说,你仍然应该看到某种变化。在您将捕获请求设置为重复请求后,您是否有可能在其他地方覆盖捕获请求?您可以检查返回的捕获结果,以查看相机设备接收的灵敏度设置。