我目前正在开发相机应用程序,但遇到了一些麻烦:如果锁定屏幕然后将其解锁,则图像会冻结。
@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()
每次再次查看该应用程序时,都会调用。问题是,你预览回调设置null
你的onPause()
,然后不是在`的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);
}
那应该解决您的问题。让我知道是否可以
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句