美文网首页
解决音频焦点问题

解决音频焦点问题

作者: 咖啡伴辣条 | 来源:发表于2019-01-17 13:13 被阅读0次

解决音频焦点问题

Android audio系统
-- 当打开音视频时处理与一个后台播放中的音频的冲突

 private void requestAudioFocus() {
        audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
        if (audioManager != null) {
            //请求焦点的参数说明:
            //AUDIOFOCUS_GAIN:想要长期占有焦点,失去焦点者stop播放和释放
            //AUDIOFOCUS_GAIN_TRANSIENT:想要短暂占有焦点,失去焦点者pause播放
            //AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:想要短暂占有焦点,失去焦点者可以继续播放但是音量需要调低
            //AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE:想要短暂占有焦点,但希望失去焦点者不要有声音播放
            audioManager.requestAudioFocus(mAudioFocusListener, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT);
        }
    }
 private void abandonAudioFocus() {
        audioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
        if (audioManager != null) {
            audioManager.abandonAudioFocus(mAudioFocusListener);
        }
    }
    private AudioManager.OnAudioFocusChangeListener mAudioFocusListener = new AudioManager.OnAudioFocusChangeListener() {
        @Override
        public void onAudioFocusChange(int focusChange) {
            switch (focusChange) {
                case AudioManager.AUDIOFOCUS_LOSS:
                    //对应AUDIOFOCUS_GAIN 表示音频焦点请求者需要长期占有焦点,这里一般需要stop播放和释放
                    // pauseMediaPlayer();
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                    //对应AUDIOFOCUS_GAIN_TRANSIENT 表示音频焦点请求者需要短暂占有焦点,这里一般需要pause播放
                    //pauseMediaPlayer();
                    break;
                case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                    //对应AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK 表示音频焦点请求者需要占有焦点,但是我也可以继续播放,只是需要降低音量或音量置为0
                    break;
                case AudioManager.AUDIOFOCUS_GAIN:
                    //获得焦点,这里可以进行恢复播放
                    if (mediaPlayer != null) {
                       //  startMediaPlayer();
                    }
                    break;
                default:
            }
        }
    };

以上自定义后台播放音乐小控件的音频焦点逻辑,其他音频播放时暂停 ,其他音视频停止播放时恢复播放。一般的音视频播放都会遵循这样的逻辑,如果音视频焦点未设置,可以在控件初始化时(播放时)申请焦点,控件释放时(停止播放时)释放焦点达到目的 。

貌似在Android 9.0设备上面需要单独适配,项目中换了另外一种方案。

相关文章

  • 解决音频焦点问题

    解决音频焦点问题 Android audio系统-- 当打开音视频时处理与一个后台播放中的音频的冲突 以上自定义后...

  • 音频焦点

    开发音视频的时候,都会遇到音频焦点的相关问题;那啥是音频焦点呢?我理解的音频焦点是,就像上课一样,老师问了一个问题...

  • 团体心理沙盘中的焦点解决主要关注哪几类问题

    团体心理沙盘中的焦点解决主要关注哪几类问题 焦点问题的解决,即焦点解决(也有的...

  • Android VidowView音频焦点问题

    前言 好久没有发布文章了,整个5月底6月初的状态都在准备复习与面试的路上,最终选择了一家薪资待遇都不错的公司。之后...

  • 罗世睿伊川焦点分享第21天

    焦点问题解决:焦点问题解决是在短期家庭治疗中发展起来的一种心理治疗技术,称为焦点解决短期治疗,焦点解决是从系统观的...

  • 聚焦未来 聚焦解决

    2017.8.11,无为。焦点解决焦点分享第30天。继续整理学习笔记,温习焦点解决理念,“谈论问题只会引起问题,谈...

  • 焦点分享第19天 20180516

    焦点解决是指,以寻找解决问题的方法为核心的咨询技术。焦点解决技术强调寻找如何解决问题的方法,而非发现问题原因;并以...

  • 问题的解决

    2017.9.4,无为 。焦点分享第52天。整理学习笔记,温习焦点解决理念,“谈论问题只会引起问题,谈论解决才能创...

  • 佛陀语:我所教的是对醒觉有用的

    焦点解决是解决导向,而非问题导向,关注寻求解决之道,而不关注问题是怎么来的,谁造成的。 焦点解决的导向,学自于佛教...

  • 焦点解决短期心理咨询技术

    来访者大都希望能短期解决困扰他的心理问题。而最近在学习的焦点解决短期心理问题技术可谓是非常受用。 焦点解决...

网友评论

      本文标题:解决音频焦点问题

      本文链接:https://www.haomeiwen.com/subject/ckcidqtx.html