Wie zeichne ein Overlay auf einem SurfaceView von Kamera auf Android verwendet?

Habe ich ein einfaches Programm, das zeichnet die Vorschau der Camera in eine SurfaceView. Was ich versuche zu tun, ist mit der onPreviewFrame - Methode, die aufgerufen wird, jedes mal, wenn ein neues Bild gezeichnet wird, in der SurfaceViewum durchzuführen, die invalidate Methode, die angeblich zu berufen, die onDraw Methode. In der Tat, die onDraw Methode aufgerufen wird, aber nichts gedruckt wird (ich denke, die Kamera-Vorschau überschreiben Sie den text, den ich versuche zu zeichnen).

Dies ist eine Vereinfachung version des SurfaceView Unterklasse, die ich habe:

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);
  //nothing gets drawn :(
  Paint p = new Paint(Color.RED);
  canvas.drawText("PREVIEW", canvas.getWidth() / 2,
    canvas.getHeight() / 2, p);
 }
}

InformationsquelleAutor der Frage Cristian | 2010-05-29

Schreibe einen Kommentar