屏幕锁定后相机预览冻结
2022-09-02 08:52:43
我编写的自定义相机应用程序在屏幕锁定后停止提供预览(通过按锁定或等待几分钟)。我没有遇到异常,这使得很难找到问题。
Android屏幕锁定(如果这是正确的术语)是否暂停/停止/...我的应用(活动)?
如果是这种情况,原因可能是我的 onPause/onResume 方法吗?还是可能出现其他原因?
提前致谢
我编写的自定义相机应用程序在屏幕锁定后停止提供预览(通过按锁定或等待几分钟)。我没有遇到异常,这使得很难找到问题。
Android屏幕锁定(如果这是正确的术语)是否暂停/停止/...我的应用(活动)?
如果是这种情况,原因可能是我的 onPause/onResume 方法吗?还是可能出现其他原因?
提前致谢
我遇到了同样的问题,并使用以下步骤修复了它:
我创建了相机预览,并将其添加到父活动的 onResume() 中的容器 FrameLayout 中。像这样:
public void onResume{
super.onResume();
mCamera = Camera.open();
if(null != mCamera){
mCamera.setDisplayOrientation(90);
mPreview = new CameraOverlay(getActivity(), mCamera);
frLyParent.addView(mPreview);
}
}
我删除了 onPause() 中的视图。这修复了冻结问题。
public void onPause(){
super.onPause();
if(null != mCamera){
mCamera.release();
mCamera = null;
}
frLyParent.removeView(mPreview);
mPreview = null;
}
其中 CameraOverlay() 是扩展 SurfaceView 并实现 SurfaceHolder.Callback 的类。如果您需要该实现,请告诉我。
这是我的,它确实有效:-)
@Override
public void onResume() {
super.onResume();
try {
camera = Camera.open();
holder.addCallback(this);
surface.setVisibility(View.VISIBLE);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onPause() {
try {
surface.setVisibility(View.GONE);
holder.removeCallback(this);
camera.release();
} catch (Exception e) {
e.printStackTrace();
}
super.onPause();
}