0

我想通过 Intent 捕捉图像

意图 cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)

但问题是使用此代码启动相机并且用户必须单击相机按钮来捕捉图像,但我想要的是相机应该启动并拍照而无需与用户进行任何进一步的交互

我想使用 INTENT 来做到这一点

4

3 回答 3

1

我就是这样做的:声明一个 Camera 和 SurfaceHolder 的实例。

创建一个对象CallBackPicture,并实现PictureTaken上的方法(要拍照时启动的方法)

                 mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);  
                 Camera.PictureCallback mCall = new Camera.PictureCallback()  
                 {     
                     @Override  
                     public void onPictureTaken(byte[] data, Camera camera)  
                    {
                                             //DO YOUR STUFF
                    }
                };  

               // Open the instance of camera
               mCamera = Camera.open();
               try {
               // Call the preview (not sure if it is working without this call
               mCamera.setPreviewDisplay(mSurfaceHolder);
               mCamera.startPreview();
               } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
               }

               if(mCamera == null) Log.i(TAG, "mCamera is null");
               // Will call the onPictureTaken implemented above
               // Look at the documentation : public final void takePicture 

               mCamera.takePicture(null, null, mCall);  
               mCamera.stopPreview();
               mCamera.release();

通过修改这个,你应该能够做你想做的事。不要忘记修改 Manifest.XML,但我想你已经做到了!

编辑:有时 stoppreview() 和 release() 会出现一些问题。所以,我所做的是:

if (mCamera != null) {
    mCamera.release();
    mCamera = null;
}
mCamera = Camera.open();
etc...
于 2011-09-02T15:48:45.363 回答
0

这是做不到的。只有两个选项:

  1. 通过 Intent 调用相机应用程序。然后用户以正常方式使用相机应用程序 - 即在准备好时按下按钮。

  2. 使用Camera类 - 与通过 Intent 运行相机应用程序相比,这需要更多的工作。但它可以让你完全控制。

于 2011-09-02T13:08:29.040 回答
0

当您调用相机意图时,您基本上“运行”相机应用程序(或在此意图上注册的其他应用程序),所以基本上,您无法控制它的工作方式。您可以使用相机 API ...看看这里

于 2011-09-02T13:10:12.013 回答