如何从相机拍摄两张连续照片?

时间:2014-03-20 22:23:51

标签: android android-camera

当我试图从相机拍摄一张照片时,它工作正常。现在我对我的代码添加了一些修改,并想从相机中连续拍摄两张照片。

public void takePicture(final boolean isWithFlash) {
    Camera.PictureCallback mCall = new Camera.PictureCallback() {

        @Override
        public void onPictureTaken(byte[] data, Camera camera) {

            Bitmap bmp = BitmapFactory.decodeByteArray(data, 0, data.length);

            if(isWithFlash) {
                savePhotoToDirectory(data, captureImageFileName);

                mCamera.stopPreview();
                mCamera.release();
                mCamera = null;
            } else {
                savePhotoToDirectory(data, captureImageFileName);
                takePicture(true);
            }

        }
    };
    if(mCamera != null) {
        if(!isWithFlash) {
            Parameters param = mCamera.getParameters();
            mCamera.takePicture(null, null, mCall);
        } else {
            Parameters param = mCamera.getParameters();
            param.setFlashMode(Parameters.FLASH_MODE_TORCH);
            mCamera.setParameters(param);
            mCamera.takePicture(null, null, mCall);
        }
    } else {
        Log.d("MYLOG", "Camera is null");
    }
}

我尝试做的是拍摄没有闪光灯的照片,然后连续拍摄另一张带闪光灯的照片。但是,当我尝试使用我的代码时,它只需要第一张照片,而第二张onPictureTaken()函数未被调用。

我在这里做错了什么?或者有更好的方法拍摄两张连续照片吗?

任何评论都会非常感激!

1 个答案:

答案 0 :(得分:2)

第二次通话后,您无需致电mCamera.stopPreview()。但是你需要在第一个之后调用mCamera.startPreview()。我会在两次拨打takePicture()之间引入一些延迟,例如使用View.post()拍摄第二张照片。但也许这个帖子是没有必要的,并且它导致的延迟对你的目的来说太多了 - 你可以决定。