Attualmente sto cercando di creare un'applicazione Android per scattare foto e ho bisogno di bloccare l'anteprima della fotocamera su un dato evento (ad esempio foto scattata) e riavviarlo solo dopo un altro evento.Anteprima fotocamera Android - Come "congelare" la fotocamera?
Ciò che voglio, in altre parole, è che la vista mostri tutto ciò che la telecamera vede fino a quando si verifica l'evento freeze e quindi blocca l'immagine (cioè visualizza ciò che era sullo schermo al momento di questo evento - come se è stata scattata una foto) fino a quando si verifica l'evento unfreeze.
Ora, sto utilizzando un SurfaceView con SurfaceHolder.Callback per fare questo e ho provato a utilizzare un PreviewCallback per bloccare lo schermo, ma sfortunatamente, non riesco a trovare un esempio o un tutorial e sono davvero bloccato a questo punto.
Se qualcuno ha una guida o di alcune indicazioni su come arrivare a questo fatto, vorrei davvero apprezzare l'aiuto ...
Sto incollando le parti rilevanti del mio codice qui sotto:
public class CustomCameraView estende SurfaceView {
Camera camera;
SurfaceHolder previewHolder;
//Callback for the surfaceholder
SurfaceHolder.Callback surfaceHolderListener = new SurfaceHolder.Callback() {
public void surfaceCreated(SurfaceHolder holder) {
camera=Camera.open();
try
{
camera.setPreviewDisplay(previewHolder);
}
catch (Throwable t) {
}
}
public void surfaceChanged(SurfaceHolder surfaceHolder, int format, int w, int h)
{
Parameters params = camera.getParameters();
params.setPictureFormat(PixelFormat.JPEG);
camera.setParameters(params);
camera.startPreview();
}
public void surfaceDestroyed(SurfaceHolder arg0)
{
camera.stopPreview();
camera.release();
}
};
public CustomCameraView(Context ctx)
{
super(ctx);
previewHolder = this.getHolder();
previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
previewHolder.addCallback(surfaceHolderListener);
setBackgroundColor(Color.TRANSPARENT);
}
public CustomCameraView(Context context, AttributeSet attrs)
{
super(context, attrs);
}
protected void onDraw (Canvas canvas)
{
}
public void closeCamera()
{
if(camera != null)
camera.release();
}
public void dispatchDraw(Canvas c)
{
super.dispatchDraw(c);
}
}
La ringrazio molto per il vostro aiuto!
-Billy