如何从相机连续拍摄两张照片?
Posted
技术标签:
【中文标题】如何从相机连续拍摄两张照片?【英文标题】:How to take two consecutive pictures from camera? 【发布时间】:2014-04-28 02:13:36 【问题描述】:当我尝试从相机拍摄单张照片时,它工作正常。现在我对我的代码进行了一些修改,并想从相机连续拍摄两张照片。
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()
函数没有被调用。
我在这里做错了什么?或者有什么更好的方法可以连续拍两张?
任何 cmets 将不胜感激!
【问题讨论】:
【参考方案1】:您无需在第二次通话后拨打mCamera.stopPreview()
。但是您需要在第一个之后致电mCamera.startPreview()
。我会在两次调用takePicture()
之间引入一些延迟,例如bu 使用View.post() 拍摄第二张照片。但也许这个帖子不是必需的,它造成的延迟对你来说太过分了——这由你来决定。
【讨论】:
哦,其实我是在其他功能中开启了相机预览,所以拍照后不得不停止预览。此外,使用延迟是我的另一个选择之一,但我不确定这是否是最好的方法。 不,您不需要停止预览; takePicture 本身就是这样做的。但是,如果您想从相机中获取另一张照片,则需要重新开始预览。参见例如***.com/a/7715021/192373 好的,我刚刚用startPreview()
进行了测试,它似乎工作正常! (我没有使用延迟)非常感谢,您节省了我的时间!以上是关于如何从相机连续拍摄两张照片?的主要内容,如果未能解决你的问题,请参考以下文章