Предварительный просмотр камеры Android Как «заморозить» камеру?

В настоящее время я пытаюсь создать приложение для Android, чтобы делать снимки, и мне нужно заморозить предварительный просмотр камеры для данного события (т.е. сделать снимок) и перезапустить его только после другого события.

Другими словами, я хочу, чтобы представление отображало все, что видит камера, до тех пор, пока не произойдет событие заморозки, а затем заморозило изображение (т.е. отобразило все, что было на экране во время этого события, как если бы был сделан снимок). ) до тех пор, пока не произойдет событие разморозки.

Теперь я в настоящее время использую SurfaceView с SurfaceHolder.Callback для этого, и я пытался использовать PreviewCallback, чтобы заморозить экран, но, к сожалению, я не могу найти пример или учебник, и я действительно застрял на этом точка.

Если у кого-то есть руководство или несколько указателей о том, как это сделать, я был бы очень признателен за помощь...

Я вставляю соответствующие части моего кода ниже:

открытый класс CustomCameraView расширяет 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);
}

}

Большое спасибо за Вашу помощь!

-Билли


person user510159    schedule 16.11.2010    source источник


Ответы (1)


Старый вопрос, я знаю, но отвечаю для потомков. Вы должны иметь возможность просто позвонить

camera.stopPreview();

Предварительный просмотр остановится на том, на что вы смотрите, пока вы снова не вызовете startPreview().

person Mike    schedule 09.12.2011