I have a simple program that draws a Camera preview in SurfaceView . What I'm trying to do is use the onPreviewFrame method, which is called every time a new frame is pulled into the SurfaceView , to execute the invalidate method, which should call the onDraw fact, the onDraw method onDraw called, but nothing is printed (I think preliminary viewing the camera overwrites the text I'm trying to draw).
This is a simplified version of the SurfaceView subclass:
public class Superficie extends SurfaceView implements SurfaceHolder.Callback { SurfaceHolder mHolder; public Camera camera; Superficie(Context context) { super(context); mHolder = getHolder(); mHolder.addCallback(this); mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public void surfaceCreated(final SurfaceHolder holder) { camera = Camera.open(); try { camera.setPreviewDisplay(holder); camera.setPreviewCallback(new PreviewCallback() { public void onPreviewFrame(byte[] data, Camera arg1) { invalidar(); } }); } catch (IOException e) {} } public void invalidar(){ invalidate(); } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { Camera.Parameters parameters = camera.getParameters(); parameters.setPreviewSize(w, h); camera.setParameters(parameters); camera.startPreview(); } @Override public void draw(Canvas canvas) { super.draw(canvas);
android camera surfaceview
Cristian May 29 '10 at 5:05 a.m. 2010-05-29 05:05
source share