如何在其他Android应用需要时释放麦克风资源?

Jos*_*osh 10 service android microphone broadcastreceiver android-intent

我已经实现了一个Android后台服务(基于Pocket Sphinx),可以在手机屏幕打开时持续监听,检测和发现某些关键字,然后做出相应的反应(对于domotic项目).但是,我的应用程序应始终具有较低的优先级,并且我希望它在任何其他应用程序需要使用时释放麦克风的资源.当应用程序 - 想要使用麦克风时,我可以接收任何系统意图或系统广播(以便我的服务可以释放它)吗?或者,有更好的方法或更好的做法吗?

当另一个应用想要访问麦克风时,这是我想避免的错误的日志:

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
Run Code Online (Sandbox Code Playgroud)

DAD*_*590 0

检查我的这个答案:/sf/answers/5293882121/。如果您是特权系统应用程序(CAPTURE_AUDIO_HOTWORD需要许可),您可以使用HOTWORD音频源,它正是这样做的 - 我想,使用该源将麦克风提供给任何其他请求它的东西MIC

如果没有,在 Android 10 以下,我认为不可能以一种体面的方式实现(或者至少我没有找到任何实际的解决方案)。截至 10,不知道,因为我还没有研究它的文档 xD,但我认为它是不同的(?): https: //developer.android.com/guide/topics/media/sharing-audio-input