我想通过Intent
捕获图像Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE)
但问题是,使用此代码启动摄像头并且用户必须单击摄像头按钮才能捕获图像,但我想要的是摄像头开始拍摄照片而不与用户进行任何更好的交互
我想使用INTENT
这样做答案 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)
这不可能。只有两个选择:
通过Intent调用相机应用。然后用户以正常方式使用相机应用程序 - 即在准备好时按下按钮。
使用Camera
类 - 与通过Intent运行Camera app相比,这是一项更多的工作。但它让你完全掌控。
答案 2 :(得分:0)
当您调用相机意图时,您基本上“运行”相机应用程序(或在此意图上注册的其他应用程序),所以基本上,您无法控制它的工作方式。 您可以使用Camera API ...看看here