Android 在OnToPresumedActivity中打开摄像头时出现问题已更改

Android 在OnToPresumedActivity中打开摄像头时出现问题已更改,android,camera,android-camera,android-10.0,Android,Camera,Android Camera,Android 10.0,我有一个使用摄像头的Android应用程序。到目前为止,我一直在活动的onResume回调中打开相机,然后在onPause中释放它。在安卓10之前,这一切都很好 从Android 10开始,可能有多个活动处于恢复状态,因此我尝试在新的onTopResumedActivityChanged回调中打开/释放摄像头。报告说: 应该使用此回调而不是onResume()来指示活动可以尝试打开独占访问设备,如camera 我正在分屏设置上测试这一点,另一个摄像头应用程序正在运行。有时,当我点击我的应用程序时

我有一个使用摄像头的Android应用程序。到目前为止,我一直在活动的
onResume
回调中打开相机,然后在
onPause
中释放它。在安卓10之前,这一切都很好

从Android 10开始,可能有多个活动处于恢复状态,因此我尝试在新的
onTopResumedActivityChanged
回调中打开/释放摄像头。报告说:

应该使用此回调而不是onResume()来指示活动可以尝试打开独占访问设备,如camera

我正在分屏设置上测试这一点,另一个摄像头应用程序正在运行。有时,当我点击我的应用程序时,它会成功地打开相机;有时它会失败,并出现如下运行时异常:

W/CameraBase: An error occurred while connecting to camera 0: Status(-8, EX_SERVICE_SPECIFIC): '7: connectHelper:1500: Higher-priority client using camera, ID "0" currently unavailable'
E/CameraPreview: Cannot open camera
    java.lang.RuntimeException: Fail to connect to camera service
        at android.hardware.Camera.<init>(Camera.java:630)
        at android.hardware.Camera.open(Camera.java:455)
        [...]
W/CameraBase:连接到摄影机0时出错:状态(-8,特定于EX_服务):“7:connectHelper:1500:使用摄影机的高优先级客户端,ID“0”当前不可用”
E/CameraPreview:无法打开摄像头
java.lang.RuntimeException:无法连接到摄影机服务
在android.hardware.Camera。(Camera.java:630)
打开(Camera.java:455)
[...]

为什么会这样?从理论上讲,如果调用
OntPresumedActivityChanged
,并将
isTopResumedActivity
设置为true,则我的活动已经是恢复时间最长的活动,并且应该是相机的最高优先级客户端。

这会是一种竞争情况吗?如中所示,您的活动正在获得焦点,但相机尚未准备好使用,您是否立即尝试使用它?只是为了检查一下,可能会在你的功能中延迟1秒钟,看看这个问题是否仍然存在。我认为另一个应用程序无法释放相机。乍一看,这可能就是问题所在