当我试图从相机拍摄一张照片时,它工作正常。现在我对我的代码添加了一些修改,并想从相机中连续拍摄两张照片。
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()
函数未被调用。
我在这里做错了什么?或者有更好的方法拍摄两张连续照片吗?
任何评论都会非常感激!
答案 0 :(得分:2)
第二次通话后,您无需致电mCamera.stopPreview()
。但是你需要在第一个之后调用mCamera.startPreview()
。我会在两次拨打takePicture()
之间引入一些延迟,例如使用View.post()拍摄第二张照片。但也许这个帖子是没有必要的,并且它导致的延迟对你的目的来说太多了 - 你可以决定。