微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何监听外部玩家活动

如何解决如何监听外部玩家活动

前台服务中,我正在通过 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 举报,一经查实,本站将立刻删除。