根据官方的谷歌团队声明,android 5.1上的控件曝光补偿手动更改被破坏。我找了几天的解决办法,唯一找到的就是连接到传感器信息灵敏度范围。但是,我发现使用它有一些困难。我的代码如下:

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);

当然,“i”值是从seekbar中获取的进度值,并且每次都在onprogresschanged函数中关闭。
问题是在操纵seekbar时没有可见的变化。我真的很感激你的帮助。

最佳答案

control_ae_exposure_compensation在android 5.1中没有被破坏,它仅在nexus 6上被禁用(并将在以后的更新中重新启用)。
如果要禁用自动曝光,除了灵敏度之外,可能还需要设置曝光时间。您还最好需要设置帧持续时间,尽管这两个值的默认值可能都是1/30秒,这是合理的。您还可以从自动曝光的最新捕获结果中复制最新值。
也就是说,你还是应该看到一些变化。在将此捕获请求设置为重复请求之后,是否有可能在其他位置覆盖此捕获请求?您可以检查返回的捕获结果,以查看相机设备正在接收的灵敏度设置。

关于android - Android Camera2 API手动曝光更改,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30345757/

10-11 20:22