首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >validateClientPermissionsLocked:来电者“包”不能从背景中打开相机"1“

validateClientPermissionsLocked:来电者“包”不能从背景中打开相机"1“
EN

Stack Overflow用户
提问于 2019-01-03 10:27:33
回答 1查看 3.1K关注 0票数 4

当应用程序处于后台时,试图从前面的摄像头捕捉照片。

我有下面的代码在Android 6和更低版本中工作。

代码语言:javascript
运行
复制
Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
cameraCount = Camera.getNumberOfCameras();
for (int camIdx = 0; camIdx < cameraCount; camIdx++) {
    Camera.getCameraInfo(camIdx, cameraInfo);
    if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
        myCamera = Camera.open(camIdx);
    }
}

这在Android 7和以上只有在应用程序在前台的情况下才能工作。如果应用程序处于后台,它将显示以下错误:

代码语言:javascript
运行
复制
W/CameraBase: An error occurred while connecting to camera 1: Status(-8): '6: validateClientPermissionsLocked:915: Caller "packagename" (PID 10152, UID 32606) cannot open camera "1" from background'

W/System.err: java.lang.RuntimeException: Fail to connect to camera service

W/System.err:     at android.hardware.Camera.<init>(Camera.java:546)

W/System.err:     at android.hardware.Camera.open(Camera.java:392)

W/System.err:     at com.tracking_smartphone.TakePictureActivity.takePictureNoPreview(TakePictureActivity.java:77)

W/System.err:     at com.tracking_smartphone.TakePictureActivity.onCreate(TakePictureActivity.java:46)

W/System.err:     at android.app.Activity.performCreate(Activity.java:7144)

W/System.err:     at android.app.Activity.performCreate(Activity.java:7135)

W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)

W/System.err:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894)

W/System.err:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049)

W/System.err:     at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)

W/System.err:     at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)

W/System.err:     at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)

W/System.err:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809)

W/System.err:     at android.os.Handler.dispatchMessage(Handler.java:106)

W/System.err:     at android.os.Looper.loop(Looper.java:193)

W/System.err:     at android.app.ActivityThread.main(ActivityThread.java:6680)

W/System.err:     at java.lang.reflect.Method.invoke(Native Method)

W/System.err:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)

W/System.err:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

在从JobService调用的活动中调用代码。

EN

回答 1

Stack Overflow用户

发布于 2020-07-29 17:20:31

Android文档他说

前台服务需求-您的应用程序什么时候与相机交互?在Android 9 (API级别28)和更高版本上,后台运行的应用程序无法访问摄像头。因此,您应该在应用程序位于前台或作为前台服务的一部分时使用相机。

因此,如果您希望能够与背景中的摄像机进行交互,则需要通过所谓的“前台服务”(前台服务)进行交互,这基本上是一种后台服务,其通知会通知用户何时使用持久化通知进行活动。有关示例,请参见前台服务文档

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54020430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档