带有摄像头预览的SurfaceView不会被破坏

Kir*_*kov 5 camera android preview surfaceview destroy

我有一个带有2个标签(活动)的标签活动.每个选项卡都有一个3D Open GL场景,绘制在带有摄像头预览的SurfaceView上.

然而,根据设备方向,正在切换标签.

问题是,当其他活动开始时,它会调用camera.open(),它会生成异常,说相机服务不可用.

事实上,问题是当活动暂停时相机不会停止,换句话说,不会为SurfaceView调用onSurfaceDestroyed().当调用onPause()活动时,我试图停止摄像头,但仍然得到相同的错误.

任何人都有与标签活动相同的问题?知道如何让surfaceview被破坏吗?

Kir*_*kov 6

看起来这个问题很受欢迎,所以我再一次在这里添加解决方案.

根本原因是app暂停时从未为SurfaceView调用surfaceDestroyed.

所以我创建了一个包含所有子视图的framelayout.将其设置为内容视图.然而,只需调用onPause()中的setVisibility(View.GONE)和onResume()中的View.Visible来停止相机.这将导致SurfaceView的破坏.