Mam prosty program, który rysuje podgląd Camera
w SurfaceView
. Próbuję użyć metody onPreviewFrame
, która jest wywoływana za każdym razem, gdy nowa klatka jest wciągana do SurfaceView
, aby wykonać metodę invalidate
, która ma wywoływać metodę onDraw
. W rzeczywistości wywoływana jest metoda onDraw
, ale nic tam nie jest drukowane (domyślam się, że podgląd kamery zastępuje tekst, który próbuję narysować).Jak narysować nakładkę na SurfaceView używanym przez aparat na Androida?
Jest to uproszczenie wersja SurfaceView
podklasy mam:
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);
}
}
może u pls mi pomóc jak u zrobili im próbuje zmienić kolor kliknij przycisk rysunek jak BUTTON1- > czerwony przycisk2-> żółty itp. Jak to zrobić, używając płótna? Chcę aplikować na żywo z kamery tak samo jak efekty z kamery na żywo – Erum