Android camera2 API CameraManager.openCamera(...) 屏幕锁定时出现问题
Android camera2 API CameraManager.openCamera(...) problem while screen is locked
请帮助我。我正在开发一个需要将视频流式传输到 PC 的移动应用程序。
其中一项要求是使用锁定的 phone 开始工作。但是每次我尝试打开 CameraDevice 时都会导致异常。
android.hardware.camera2.CameraAccessException: CAMERA_DISABLED (1): connectHelper:1735: Camera "0" disabled by policy
at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:1009)
at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:544)
at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:725)
at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:693)
at com.pv.imageview.hardware.CameraAccess.startRecord(CameraAccess.java:293)
at com.pv.imageview.LoopService.onStartCommand(LoopService.java:52)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4320)
at android.app.ActivityThread.access00(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1951)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
W/System.err: Caused by: android.os.ServiceSpecificException: connectHelper:1735: Camera "0" disabled by policy (code 6)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2387)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.hardware.ICameraService$Stub$Proxy.connectDevice(ICameraService.java:634)
at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:511)
... 13 more
我确定您可以在 phone 锁定时打开相机,因为我有可以执行此操作的 APK。而且不需要使用管理员。
我已经尝试启动前台服务,因为它的优先级更高,我认为它有帮助,但没有。
如果 phone 已解锁 - 工作正常。
在 Pixel 5 和 HUAWEI p40 pro 上测试。
请帮帮我!
因此,正如 Muhammad Babar 向我建议的那样,我可以降低目标 API 水平,这会有所帮助。
但我刚刚找到了问题的正确解决方案,如果您有兴趣——请阅读此文档:
https://developer.android.com/guide/components/foreground-services
请帮助我。我正在开发一个需要将视频流式传输到 PC 的移动应用程序。 其中一项要求是使用锁定的 phone 开始工作。但是每次我尝试打开 CameraDevice 时都会导致异常。
android.hardware.camera2.CameraAccessException: CAMERA_DISABLED (1): connectHelper:1735: Camera "0" disabled by policy
at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:1009)
at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:544)
at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:725)
at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:693)
at com.pv.imageview.hardware.CameraAccess.startRecord(CameraAccess.java:293)
at com.pv.imageview.LoopService.onStartCommand(LoopService.java:52)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:4320)
at android.app.ActivityThread.access00(ActivityThread.java:237)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1951)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
W/System.err: Caused by: android.os.ServiceSpecificException: connectHelper:1735: Camera "0" disabled by policy (code 6)
at android.os.Parcel.createExceptionOrNull(Parcel.java:2387)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.hardware.ICameraService$Stub$Proxy.connectDevice(ICameraService.java:634)
at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:511)
... 13 more
我确定您可以在 phone 锁定时打开相机,因为我有可以执行此操作的 APK。而且不需要使用管理员。
我已经尝试启动前台服务,因为它的优先级更高,我认为它有帮助,但没有。 如果 phone 已解锁 - 工作正常。 在 Pixel 5 和 HUAWEI p40 pro 上测试。
请帮帮我!
因此,正如 Muhammad Babar 向我建议的那样,我可以降低目标 API 水平,这会有所帮助。 但我刚刚找到了问题的正确解决方案,如果您有兴趣——请阅读此文档:
https://developer.android.com/guide/components/foreground-services