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