То есть, как я это сделал: Объявите экземпляр 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();
Изменяя это, вы должны быть в состоянии делать то, что вы хотите .. Don Не забудьте также изменить Manifest.XML, но я думаю, вы уже это сделали!
EDIT: иногда есть некоторая проблема с stoppreview() и Release() .. Итак, вещь я сделал это:
if (mCamera != null) {
mCamera.release();
mCamera = null;
}
mCamera = Camera.open();
etc...