• After 15+ years, we've made a big change: Android Forums is now Early Bird Club. Learn more here.

Apps How to manually display frames from Camera.PreviewCallback after processing, without Camera.Preview

I have built a face detection app where I get the frames from onPreviewFrame, do the face detection and then draw a circle on a canvas above my surfaceView. The problem is frames are automatically displayed using the surfaceview thread when Camera.StartPreview() is started. This is obviously necessary for the PreviewCallback to kick in. As the processing, face detection and drawing, is done in a separate thread(I am assuming here), there is a 2 second delay between the frame being displayed and the result of that frame being processed and drawn on the canvas.

What I want to do is stop the camera preview displaying the frames and display them myself after processing. I believe this has three benefits:

The delay with disappear.

I can draw straight to the bitmap instead of on a canvas which is useless as you can not undo what you have done.

It will help keep memory comsumption low by not having two threads using the same image.

I've read that it is possible to display frames from the previewCallback, does anybody know how and how to stop the frames being displayed automatically?

Many thanks in advance.
 

BEST TECH IN 2023

We've been tracking upcoming products and ranking the best tech since 2007. Thanks for trusting our opinion: we get rewarded through affiliate links that earn us a commission and we invite you to learn more about us.

Smartphones