安卓摄像头控制快门后拍摄的图像停留在预览状态的时间



我在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是以毫秒为单位的长度,表示捕获的图像显示的时间。

最新更新