我正在使用camera.takePicture()
在Android(2.3及更高版本)中拍照。它工作得很好,但我在不同的设备上得到奇怪的行为。在我的Nexus One上,我拍摄的图像在恢复到预览之前会保持冻结几秒钟。在我的Transformer上,它几乎立即恢复到预览状态。
目前,解决方法是在camera.stopPreview()
活动中致电onShutter()
,但这仍然有点奇怪,因为它没有显示您拍摄的照片,它显示了你拍完照片后预览看到的瞬间。在Transformer上,你甚至可以看到它"冻结 - 移动 - 冻结"因为它在拍摄照片后一瞬间冻结,然后再次开始移动,然后在调用stopPreview()
时进入onShutter并冻结。
有没有人知道某个地方的某个设置,或者我可以调用的一些代码,它会告诉相机在重新启动预览之前保留该图像多长时间?或者更好的是,它根本不会自动释放预览,并等到我调用startPreview?
答案 0 :(得分:1)
on my devices I have to restart the preview manually, it doesn't start up itself after taking a picture. I use a picture callback like
camera.takePicture(null, null, takePictureCallback);
and the callback is
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 saves the image, PHOTO_PREVIEW_LENGTH is the length in ms for how long is the captured image shown.