我在Android(2.3及更高版本)中拍照,使用camera.takePicture()
拍照。它工作得很好,但我在不同的设备上看到了奇怪的行为。在我的Nexus One上,我拍摄的图像在恢复到预览之前会冻结几秒钟。在我的Transformer上,它几乎立即恢复到预览。
现在,一个解决方法是在onShutter()
事件中调用camera.stopPreview()
,但这仍然有点奇怪,因为它没有显示您拍摄的照片,它显示的是您拍摄照片后预览看到的瞬间。在Transformer上,你甚至可以看到它"冻结-移动-冻结",因为它在拍照后冻结了一秒钟,然后再次开始移动,然后到达onShutter并在我调用stopPreview()
时冻结。
有没有人知道某个地方的设置,或者一些我可以调用的代码,这将告诉相机在重新启动预览之前保持该图像多长时间?或者更好的是,让它不自动释放预览,直到我调用startPreview?
在我的设备上,我必须手动重新启动预览,它不会在拍照后自行启动。我使用像
这样的图片回调camera.takePicture(null, null, takePictureCallback);
,回调是
private Camera.PictureCallback takePictureCallback = new Camera.PictureCallback() {
@Override
public void onPictureTaken(byte[] data, Camera cam) {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (camera != null) {
camera.startPreview();
}
canTakePicture = true;
}
}, PHOTO_PREVIEW_LENGTH);
new PhotoProcessor(activity, targetUri).execute(data);
}
};
PhotoProcessor保存图像,PHOTO_PREVIEW_LENGTH是以毫秒为单位的长度,表示捕获的图像显示的时间。