Как освободить ресурс микрофона, когда это нужно другому Android-приложению?
Я реализовал фоновый сервис Android (основанный на Pocket Sphinx), который непрерывно прослушивает, обнаруживает и обнаруживает определенные ключевые слова при включенном экране телефона, а затем реагирует соответствующим образом (для домашнего проекта). Тем не менее, мое приложение всегда должно иметь более низкий приоритет, и я хочу, чтобы оно высвобождало ресурсы микрофона, когда любое другое приложение должно его использовать. Есть ли какое-либо системное намерение или системное вещание, которое я могу получить, когда приложение хочет использовать микрофон (чтобы мой сервис мог его разблокировать)? Или есть лучший подход или лучшая практика?
Это журнал с ошибками, которых я хочу избежать, когда другое приложение хочет получить доступ к микрофону:
AudioFocus requestAudioFocus() from android.media.AudioManager@419c3908com.google.android.voicesearch.a.h@419c67b8
I/MicrophoneInputStream(32360): mic_starting com.google.android.speech.audio.w@41989a30
D/AudioHardwareALSA(277): openInputStream: devices 0x400000 format 0x1 channels 16 sampleRate 16000
E/AudioHardwareALSA(277): error:Input stream already opened for recording
E/AudioRecord(32360): Could not get audio input for record source 6
E/AudioRecord-JNI(32360): Error creating AudioRecord instance: initialization check failed.
E/AudioRecord-Java(32360): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
E/MicrophoneInputStream(32360): Failed to initialize AudioRecord
1 ответ
Проверьте этот мой ответ: https://stackoverflow.com/a/75626887/8228163. Если вы являетесь привилегированным системным приложением (CAPTURE_AUDIO_HOTWORD
требуется разрешение), вы можете использоватьHOTWORD
источник звука, который делает именно это - передает микрофон любой другой вещи, запрашивающей его, используяMIC
источник, я думаю.
Если нет, то ниже Android 10 я не думаю, что это возможно прилично (или, по крайней мере, я не нашел реальных решений). Что касается 10, понятия не имею, потому что я еще не изучал документацию по нему xD, но я думаю, что это другое (?): https://developer.android.com/guide/topics/media/sharing-audio-input.