欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 安卓-音频焦点

安卓-音频焦点

2024/10/26 12:34:32 来源:https://blog.csdn.net/beginnerdzz/article/details/141929631  浏览:    关键词:安卓-音频焦点

安卓-音频焦点

    • 音频焦点
      • 是什么
      • 怎么做

音频焦点

是什么

一个安卓系统肯定会有多个音源,音频焦点是用来处理这些音源的冲突

eg 在播放网易云的时候 打开抖音 网易云会自动暂停 并且网易云有提醒 其实是网易云做了处理

发者需要明确编写代码来请求和处理音频焦点的变化。

怎么做

主要涉及这2个对象

private var audioFocusRequest: AudioFocusRequest? = null
private var audioManager: AudioManager? = null

主要的要做的工作有3个

1.当应用开始播放音频时,开发者需要通过 AudioManager 请求音频焦点:

  if (audioFocus) { //audioFocus是自定义booldoPlaying()}else {val result = audioManager!!.requestAudioFocus(audioFocusRequest!!)if (result == AudioManager.AUDIOFOCUS_GAIN) {doPlaying()audioFocus = true}}

2.处理音频焦点变化:

就是实现OnAudioFocusChangeListener 并且set进去

        val audioFocusChangeListener = AudioManager.OnAudioFocusChangeListener { focusChange: Int ->when (focusChange) {AudioManager.AUDIOFOCUS_GAIN -> {audioFocus = trueplay()Log.d(TAG, "AUDIO_FOCUS_GAIN")}AudioManager.AUDIOFOCUS_LOSS -> {audioFocus = falsepause()Log.d(TAG, "AUDIO_FOCUS_LOSS")}AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {audioFocus = falsepause()Log.d(TAG, "AUDIO_FOCUS_LOSS_TRANSIENT")}AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK ->Log.d(TAG, "AUDIO_FOCUS_LOSS_TRANSIENT_CAN_DUCK")}}audioFocusRequest = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN).setAudioAttributes(AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_MEDIA).build()).setOnAudioFocusChangeListener(audioFocusChangeListener).build()

3.放弃音频焦点: 当你的应用不再需要播放音频时

音乐暂停 或者应用销毁等等

            audioManager!!.abandonAudioFocusRequest(audioFocusRequest!!)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com