恢复活动时,在表面视图中捕获的静止图像被实时摄像机重置
Posted
技术标签:
【中文标题】恢复活动时,在表面视图中捕获的静止图像被实时摄像机重置【英文标题】:Captured still image in the surface view is getting reset by live camera when resuming the activity 【发布时间】:2020-12-21 11:36:45 【问题描述】:我正在使用自定义表面视图来捕获 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.getMessage(), e);
有没有办法在 Surface onresume 中保留最后捕获的图像?
【问题讨论】:
【参考方案1】:我用它来保存屏幕上捕获的图像
//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);
【讨论】:
我在捕获图像后删除了回调 - surfaceView.getHolder().removeCallback(CameraActivity.this);.. 仍然捕获的图像在 onresume 上消失了 然后可以在onresume()中写一个开始预览的条件,如果已经抓到了,这种情况下不需要开始相机预览,抱歉兄弟回复晚了以上是关于恢复活动时,在表面视图中捕获的静止图像被实时摄像机重置的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationController 的背景图像在视图控制器被推送或弹出时保持静止并且不动画