使用Intent捕获图像而不再次单击相机按钮

时间:2011-09-02 12:53:16

标签: android android-camera-intent

我想通过Intent

捕获图像

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

但问题是,使用此代码启动摄像头并且用户必须单击摄像头按钮才能捕获图像,但我想要的是摄像头开始拍摄照片而不与用户进行任何更好的交互

我想使用INTENT

这样做

3 个答案:

答案 0 :(得分:1)

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

创建一个Object 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...

答案 1 :(得分:0)

这不可能。只有两个选择:

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

  2. 使用Camera类 - 与通过Intent运行Camera app相比,这是一项更多的工作。但它让你完全掌控。

答案 2 :(得分:0)

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