Android 调用takePicture()后自动曝光锁重置
Android Camera.Parameters类中的曝光锁定有问题。我可以在拍照前锁定曝光,但在调用Android 调用takePicture()后自动曝光锁重置,android,camera,Android,Camera,Android Camera.Parameters类中的曝光锁定有问题。我可以在拍照前锁定曝光,但在调用camera.takePicture(shutterCallback、rawCallback、jpegCallback)时,曝光会再次开始自动调整 另外,getAutoExposureLock()仍然返回true,即使预览和最终保存的图像显示调整后的曝光 Android文档称,拍照不会改变曝光锁定: 我错过了什么?我也有同样的问题。这是因为camera.takePicture(shutterC
camera.takePicture(shutterCallback、rawCallback、jpegCallback)
时,曝光会再次开始自动调整
另外,getAutoExposureLock()
仍然返回true
,即使预览和最终保存的图像显示调整后的曝光
Android文档称,拍照不会改变曝光锁定:
我错过了什么?我也有同样的问题。这是因为
camera.takePicture(shutterCallback、rawCallback、jpegCallback)
停止预览;您必须调用camera.startPreview()
继续预览。我自己也遇到过这个问题,我假设这是一个API错误,因为它对我和你的工作原理相同。除非你在这段时间内把它修好了?让我知道 我成功锁定了Galaxy S4的曝光补偿
Camera.Parameters parameters = mCamera.getParameters();
parameters.setAutoExposureLock(true);
mCamera.setParameters(parameters);
mCamera.startPreview();
然后在每次takePicture
回调中,我基本上将锁重置为true
Camera.Parameters parameters = mCamera.getParameters();
parameters.setAutoExposureLock(true);
mCamera.setParameters(parameters);
这就成功了。所有拍摄的图像几乎都一样明亮。更改曝光补偿无效,但更改ISO时,曝光时间会自动调整
我将对此进行深入研究,并相应地更新这篇文章。在
takePicture
回调中将锁重置为true对我的三星Galaxy Note 3不起作用。它使情况稍微好一点,但仍然会生成亮度完全不同的图像。这些JEPG内的Exif确认暴露时间从1/120秒到1/400秒不等
我还注意到一些JPEG具有相似的曝光时间
(1/120秒),但不同的亮度
值保存在exif中。所以,我猜测图像后处理器是游戏的破坏者
我通过native\u getParameters
转储了所有相机参数,找到了图像校正参数,并将它们全部设置为5
。这些参数是:
set("min-brightness", 5);
set("max-brightness", 5);
set("contrast", 5);
set("min-contrast", 5);
set("max-contrast", 5);
set("max-saturation", 5);
set("min-saturation", 5);
set("saturation", 5);
现在产量好多了。图像几乎同样明亮。所有500张测试图像的曝光时间均为1/120±1(很少为1/125),亮度为5±0.1。我在S3上也有同样的问题。我在回调开始时就结束了这一行:
public void onPictureTaken(byte[] data, Camera camera) {
//Relock the camera for S3 device
camera.startPreview();
UnLockCamera(camera);
LockCamera(camera);
// your code
具有以下两个功能
public void LockCamera(Camera camera){
//stop auto white balance and auto exposure lock
Camera.Parameters params = camera.getParameters();
if (params.isAutoExposureLockSupported()) {
params.setAutoExposureLock (true);
}
if (params.isAutoWhiteBalanceLockSupported()) {
params.setAutoWhiteBalanceLock(true);
}
camera.setParameters(params);
}
public void UnLockCamera(Camera camera){
//stop auto white balance and auto exposure lock
Camera.Parameters params = camera.getParameters();
if (params.isAutoExposureLockSupported()) {
params.setAutoExposureLock (false);
}
if (params.isAutoWhiteBalanceLockSupported()) {
params.setAutoWhiteBalanceLock(false);
}
camera.setParameters(params);
}
这种情况发生在三星设备上,在Nexus 5和Google Glass上也是如此。Nexus 6和三星Galaxy S3上也存在同样的问题。到目前为止还没有找到任何解决办法。如果你发现了,请分享。谢谢Camera.setParameters(参数)帮我搞定了,谢谢!您是如何确定参数值应为5的?