Cómo devolver un mapa de bits con onPictureTaken en Android?

Estoy construyendo una API para Android, donde los desarrolladores pueden usar mi clase para tomar una foto. Pero, ¿cómo puedo devolver un mapa de bits utilizando onPictureTaken. Mira mi código, por favor:

Este es un botón de mainActivity:

button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // onPictureTaken does not return nothing // so, how can I get a bitmap from takePicture? Bitmap mBitmap = CameraUtils.takePicture(); } }); 

Y aquí está mi clase CameraUtils:

 public class CameraUtils implements Camera.PictureCallback { private Camera mCamera = null; private SurfaceTexture surfaceTexture = new SurfaceTexture(0); public Bitmap takePicture() { try { mCamera = Camera.open(1); Camera.Parameters params = mCamera.getParameters(); List<Camera.Size> sizes = params.getSupportedPictureSizes(); params.setPictureFormat(ImageFormat.JPEG); params.setPictureSize(sizes.get(0).width, sizes.get(0).height); mCamera.setParameters(params); mCamera.setPreviewTexture(surfaceTexture); mCamera.startPreview(); Log.i("MyCamera", "before takePicture"); new Handler().postDelayed(new Runnable() { @Override public void run() { mCamera.takePicture(null, null, CameraUtils.this); } }, 1000); //how to return a bitmap from here?? //how to wait for onPictureTaken?? return ????? } catch (Exception e) { e.printStackTrace(); } } @Override public void onPictureTaken(byte[] data, Camera camera) { Bitmap mBitmap = BitmapFactory .decodeByteArray(data, 0, data.length); // // how to return something here?? // // // What logic I have to do? // // // // return mBitmap; // } } 

¿Qué tengo que hacer para obtener un mapa de bits utilizando el método de mi clase?

Gracias.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.