2011-09-02 38 views
0

我想通过意图捕捉图像捕获映像意图不点击拍照按钮再次

意向cameraIntent =新意图(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)

但问题是,这种代码相机启动,用户必须点击相机按钮捕捉图像,但我想要的是,相机sholud开始和拍照,没有任何furthur与用户furthur互动

我想这样做使用INTENT

回答

0

这不能做。只有两种选择:

  1. 通过意向调用相机应用程序。然后,用户使用正常的方式相机应用程序 - 即按下按钮时,准备好了。

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

0

当你调用摄像头的意图,你基本上“运行”相机应用(或在此意向登记的其他应用程序),所以基本上,你不能它是如何工作的控制。 您可以用相机API ...看看here

1

这就是我所采取的方式: 声明摄像机的一个实例,并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... 
相关问题