How to return a bitmap using onPictureTaken on Android?

I am creating an Android API where developers can use my class to take a picture. But how can I return a Bitmap using onPictureTaken. Check out my code, please:

This is the mainActivity button:

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(); } }); 

And here is my CameraUtils class:

 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; // } } 

What do I need to do to get one Bitmap using my class method?

Thanks.

+5
source share
1 answer

Not. Instead, you update the user interface in any way that you want to use in onPictureTaken. You do not return anything from him.

0
source

All Articles