Доступ к микрофону/камере в фоновом режиме в Android 11

Доступ к Microphone в фоновом режиме остановлен в Android 11. Есть только 3 варианта: Разрешить при использовании, Разрешить один раз и Запретить.

Как сделать так, чтобы приложение все время получало доступ к микрофону в фоновом режиме в Android 11? Есть ли обходной путь?


person Srihari Karanth    schedule 11.10.2020    source источник
comment
Нет, из соображений безопасности они получили это спустя долгое время на Android. Но более вероятно, что вы можете снова использовать службу переднего плана с некоторым компромиссом. developer.android.com/about/versions/11/privacy/   -  person 333    schedule 11.10.2020


Ответы (3)


Новая политика разработчиков Android ограничивает доступ к микрофону и камере в фоновом режиме.

Используя Accessibility Service, можно по-прежнему использовать эту функцию в фоновом режиме. Однако уведомление всегда будет включено.

person Srihari Karanth    schedule 13.10.2020
comment
У вас есть ссылка на документацию для этого, где я могу узнать более подробную информацию? - person Josh Greifer; 10.03.2021

Для доступа к фоновому микрофону/камере/местоположению в Android 11 существуют некоторые исключения, предоставленные Android, вам необходимо выполнить одно из следующих условий:

См.: https://developer.android.com/guide/components/foreground-services#restrictions-exemptions

Исключения из ограничений во время использования:

Когда служба переднего плана запускается в одной из следующих ситуаций, служба освобождается от ограничений на доступ во время использования к местоположению, камере и микрофону:

Служба запускается системным компонентом.

Служба запускается путем взаимодействия с виджетами приложения.

Служба запускается путем взаимодействия с уведомлением.

Служба запускается как объект PendingIntent, который отправляется из другого видимого приложения.

Служба запускается приложением, которое является контроллером политики устройства и работает в режиме владельца устройства.

Служба запускается приложением, которое предоставляет VoiceInteractionService.

Служба запускается приложением, имеющим привилегированное разрешение START_ACTIVITIES_FROM_BACKGROUND.

person himans    schedule 05.11.2020
comment
stackoverflow.com/questions/67284842/ - здесь я описал, что в таком случае камера не может быть доступна в службе переднего плана - person user924; 02.05.2021

Теперь нам нужно указать тип для нашей службы переднего плана (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 время от времени время на некоторых устройствах

person user924    schedule 02.05.2021
comment
Похоже, это уже не так: developer.android.com/ guide/components/ Даже если приложение запускает службу, находясь на переднем плане, служба может получить доступ к микрофону только тогда, когда приложение работает на переднем плане. - person Eric; 29.06.2021
comment
@ Эрик, мой вопрос уже объясняет это и имеет эту ссылку ... - person user924; 29.06.2021
comment
Вы написали, что такая служба может начать использовать камеру, микрофон, но, насколько я понимаю, документация по Android, которую я связал, должна быть тогда, когда такая служба может начать использовать камеру, микрофон только тогда, когда ваше приложение находится на переднем плане. В документации явно указано, что если пользователь предоставил вашему приложению разрешение RECORD_AUDIO, служба может получить доступ к микрофону только во время работы приложения на переднем плане. - person Eric; 29.06.2021