恢复活动时,实时摄像机将重置表面视图中捕获的静止图像

问题描述

我正在使用自定义表面视图在android中捕获图像。单击图像后,我需要使用Retake,Use Photo按钮选项预览捕获的图像。在此之前,一切正常。

当我锁定和解锁屏幕时,由于在onResume中调用了camera.startPreview(),因此实时摄像机会重设此捕获的图像预览。如果从onResume中删除了此方法调用,则只有黑屏可见。

这是我在onResume上的代码

   @Override
protected void onResume() {
    super.onResume();
    if (camera == null) {
        initializeCamera();
    } else {
            try {
                camera.startPreview();
            } catch (Exception e) {
                Log.e(TAG,e.getMessage(),e);
            }
    }
    sensorManager.registerListener(this,accelerometer,SensorManager.SENSOR_DELAY_norMAL);
    sensorManager.registerListener(this,magneticField,SensorManager.SENSOR_DELAY_norMAL);
}

这是surfaceCreated方法

@Override
public void surfaceCreated(SurfaceHolder holder) {
    try {
        surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
        camera.setPreviewdisplay(surfaceView.getHolder());
    } catch (Exception e) {
        Log.e(TAG,e);
    }
}

有没有一种方法可以将最后捕获的图​​像保存在恢复的表面上?

解决方法

我用它来保存屏幕上捕获的图像

//you can omit this as in onresume() you re initialise your camera if null
yourCameraSurfaceView.yourCamera=null;

//remove Callback from holder when you capture the image
yourCameraSurfaceView.yourHolder.removeCallback(yourCameraSurfaceView);