Obecnie próbuję zbudować aplikację na Androida do robienia zdjęć i potrzebuję zatrzymać podgląd kamery na danym zdarzeniu (np. Zdjęcie zrobione) i uruchomić go ponownie po kolejnym wydarzeniu.Podgląd aparatu z Androidem - jak "zamrozić" aparat?
Innymi słowy, chcę, aby widok wyświetlał wszystko, co widzi kamera, aż do wystąpienia zamrożenia obrazu, a następnie zamroził obraz (tj. Wyświetlał wszystko, co było na ekranie w momencie tego wydarzenia - tak jakby zdjęcie zostało zrobione) do momentu wystąpienia zdarzenia odmrażania.
Teraz używam SurfaceView z SurfaceHolder.Callback aby to zrobić i spróbowałem użyć PreviewCallbacka do zatrzymania ekranu, ale niestety, nie mogę znaleźć przykładu lub samouczka i jestem Naprawdę utknąłem w tym punkcie.
Jeśli ktoś ma instrukcji lub kilka wskazówek, w jaki sposób, aby to zrobić, ja naprawdę doceniam pomoc ...
jestem wklejając odpowiednie części mojego kodu poniżej:
public class CustomCameraView rozciąga 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);
}
}
Dziękuję bardzo za pomoc!
-Billy