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

问题描述

我正在使用自定义表面视图在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);

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...