【问题标题】:Access Microphone / Camera in background in Android 11在 Android 11 中在后台访问麦克风/摄像头
【发布时间】:2021-01-26 03:01:17
【问题描述】:

Android 11 中停止对后台Microphone 的访问。只有 3 个选项,使用时允许、允许一次和拒绝。

如何让应用程序在Android 11中始终访问后台的麦克风?有什么解决办法吗?

【问题讨论】:

标签: android android-11


【解决方案1】:

现在我们必须为前台服务指定一个类型 (https://developer.android.com/guide/components/foreground-services#types):

<manifest>
    ...
    <service ...
        android:foregroundServiceType="camera|microphone" />
</manifest>

但在某些情况下,即使我们指定了android:foregroundServiceType,我们的前台服务仍然无法访问摄像头或麦克风:

如果在应用程序处于后台时启动了前台服务(对用户不可见 - 没有可见的活动),例如在设备启动 (BOOT_COMPLETED) 广播时,则此类服务无法使用相机启动,麦克风

如果在应用程序处于前台时启动了前台服务(对用户可见 - 一些可见活动),则此类服务可以使用摄像头、麦克风开始

信息来自:https://developer.android.com/guide/components/foreground-services#bg-access-restrictions

我的问题Camera2 cameraManager.openCamera exception from time to time on some devices

【讨论】:

  • 这似乎不再正确:developer.android.com/guide/components/… 即使应用程序在前台启动服务“服务只能在应用程序在前台运行时访问麦克风”
  • @Eric 我的问题已经解释过了,并且有那个链接...
  • 你写了“然后这样的服务可以开始使用相机,麦克风”,但据我了解我链接的android文档,它应该是“然后这样的服务可以开始使用相机,只有当你的应用程序是麦克风前景”。在文档中明确写道:“如果用户已向您的应用授予 RECORD_AUDIO 权限,则服务只能在应用在前台运行时访问麦克风。”
【解决方案2】:

要在 Android 11 中访问后台麦克风/摄像头/位置,Android 提供了一些豁免,您需要满足以下条件之一:

参考:https://developer.android.com/guide/components/foreground-services#restrictions-exemptions

使用中限制的豁免::

当前台服务在以下情况之一启动时,该服务不受使用时访问位置、摄像头和麦克风的限制:

服务由系统组件启动。

通过与应用小部件交互来启动服务。

通过与通知交互来启动服务。

服务作为 PendingIntent 启动,从不同的可见应用发送。

服务由作为设备策略控制器的应用启动,该控制器在设备所有者模式下运行。

服务由提供 VoiceInteractionService 的应用启动。

该服务由具有 START_ACTIVITIES_FROM_BACKGROUND 特权权限的应用启动。

【讨论】:

【解决方案3】:

新的 Android 开发者政策限制在后台访问麦克风和摄像头。

使用Accessibility Service 仍然可以在后台使用该功能。但是,通知将始终开启。

【讨论】:

  • 你有这方面的文档参考吗,我可以在哪里找到更多详细信息?
猜你喜欢
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 1970-01-01
  • 2021-04-06
  • 2012-10-04
相关资源
最近更新 更多