已解决:问题与 Android 相机或 SDK 无关,而是我自己的逻辑来确定相机和表面是否都准备好了。
我有一种情况,我有一个存在于活动布局 xml 中的 SurfaceView,我向其中添加了一个回调,以便我可以知道 SurfaceHolder 何时准备好充当我的应用程序的相机预览窗口。这部分工作得很好。我得到一个预览窗口,可以使用所有与相机相关的普通方法和回调来拍摄和存储图像。
问题是,在用户拍摄完照片后,他们会收到一个按钮提示,该按钮允许他们立即拍摄另一张照片,而无需先打开他们刚刚拍摄的照片的预览窗口……这就是我的问题所在!当我尝试使用已经创建的 surfaceHolder 实例第二次调用 camera.startPreview 时,我没有得到任何预览。
如何重复使用相同的surfaceHolder?有什么方法可以强制 SurfaceView 销毁并重新创建当前持有者?