我目前正在开发照片相机应用程序,但遇到了一些问题:如果您锁定屏幕然后解锁,图像会卡住。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
//...
surfaceView = (SurfaceView) findViewById(id.surfaceView);
holder = surfaceView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holderCallback = new HolderCallback();
holder.addCallback(holderCallback);
}
@Override
protected void onResume() {
super.onResume();
camera = Camera.open(CAMERA_ID);
}
@Override
protected void onPause() {
super.onPause();
if (camera != null) {
camera.setPreviewCallback(null);
camera.stopPreview();
camera.release();
camera = null;
}
}
(CameraOverlay()
是扩展 SurfaceView
并实现 SurfaceHolder.Callback
的类。- 来自有类似问题的帖子)
我没有在任何地方使用 CameraOverlay
,我是否必须创建它只是为了在解锁屏幕后恢复预览。
我已经搜索了关于这个主题的多个帖子,但找不到任何适合我的解决方案,请帮忙。我刚开始为 Android 开发。
最佳答案
这是您的另一个选择。 onResume()
将在每次再次查看应用程序时调用。问题是您在 onPause()
中将预览回调设置为 null
,然后没有在您的 `onResume()' 中修复它。
因此,将您的 onResume()
更改为:
@Override
protected void onResume() {
super.onResume();
camera = Camera.open(CAMERA_ID);
holder = surfaceView.getHolder();
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
holderCallback = new HolderCallback();
holder.addCallback(holderCallback);
}
这应该可以解决您的问题。如果没有,请告诉我
关于java - 屏幕解锁后相机卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27162664/