Как мне перестать включать микрофон - PullRequest
0 голосов
/ 08 июня 2018

TL; DR: мое приложение включает микрофон пользователя.Могу ли я отключить его автоматически, когда другое приложение должно использовать микрофон?

У меня есть приложение для Android, которое имеет некоторые действительно классные функции микрофона, подобно Amazon Alexa, которое постоянно включено вФоновая служба.Проблема в том, что мое приложение включает микрофон пользователя, что делает его непригодным для использования:

enter image description here

Однако это ужасное поведение приложения от моего имени, и яхочу сделать все возможное, чтобы избежать этого. Можно ли получать уведомления, когда другое приложение запрашивает использование микрофона, чтобы я мог автоматически остановить свою службу?

PS: я использую библиотеку Pocketsphinx для непрерывного распознавания голоса в фоновом режиме.

Ответы [ 2 ]

0 голосов
/ 16 августа 2018

Это сложно, так как я не знаю какого-либо API для этого.Это, безусловно, потребует, чтобы API уровня системы работали как «Ok Google».

Возможен вариант (от https://stackoverflow.com/a/43623308/603270) для регулярного запуска задания с проверкой переднего плана).приложения, использующие android.permission.PACKAGE_USAGE_STATS.

Этого может быть достаточно. Но вы также можете добавить некоторые вещи, касающиеся телефонных звонков ( как обнаружить приемник вещания телефонных звонков в Android ), используя android.intent.action.PHONE_STATE или воспроизведение мультимедиа (через Receiver или, может быть, даже MediaPlayer напрямую).

0 голосов
/ 09 августа 2018

Не существует стандартного способа сообщить другому приложению, что вы хотите получить доступ к микрофону (чтобы они высвобождали ресурсы и позволяли вам получить к нему доступ).Однако вы можете отправить широковещательную рассылку всем другим приложениям («запрос микрофона»), но другие приложения должны будут реализовать эту функцию (и очень немногие или нулевые разработчики сделают это).

Я бы порекомендовал вампросто сообщить пользователю, что микрофон в данный момент недоступен, потому что вы больше ничего не можете сделать.

...