问题描述
在前台服务中,我正在通过 MediaRecorder (MediaRecorder.AudioSource.MIC) 录制电话麦克风捕获的音频。 如果有任何外部应用程序正在播放和音频,我想停止/暂停录音。
如何检测正在播放/停止执行音频/视频的其他应用的任何外部操作?
更新: 我尝试使用 AudioManager.OnAudioFocuschangelistener。
val afchangelistener: AudioManager.OnAudioFocuschangelistener =
AudioManager.OnAudioFocuschangelistener {
focusChange ->
// focus Changed
}
val audioManager = getSystemService(Context.AUdio_SERVICE) as AudioManager
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {
audioManager.requestAudioFocus(
AudioFocusRequest.Builder(AudioManager.AUdioFOCUS_GAIN)
.setonAudioFocuschangelistener(afchangelistener).build()
)
} else {;
audioManager.requestAudioFocus(
afchangelistener,AudioManager.STREAM_MUSIC,AudioManager.AUdioFOCUS_GAIN
)
}
它适用于以下场景:
- Facebook:播放/停止视频使 focusChange 返回AUdioFOCUS_LOSS_TRANSIENT/AUdioFOCUS_GAIN
- Instagram 视频/故事返回相同 (-2/1)
但是,对于 Spotify、Youtube、WhatsApp(语音消息)和许多其他应用程序,一旦它们开始播放媒体,focusChange 将返回 AUdioFOCUS_LOSS 但对于未来的事件没有别的,无论是应用程序正在工作(如 Facebook)被捕获。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)