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

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() 进行了测试,它似乎工作正常! (我没有使用延迟)非常感谢,您节省了我的时间!

以上是关于如何从相机连续拍摄两张照片?的主要内容,如果未能解决你的问题,请参考以下文章

如何一键拍摄两张不同的照片[关闭]

Android相机第二次拍摄失败

如何让用户选择在保存之前裁剪从相机拍摄的照片?

如何获取用户/相机拍摄的最后一张照片

相机应用程序拍摄新照片时如何生成通知?

使用 phonegap 连续拍摄图像