首页 文章

在应用媒体播放器开始播放时暂停所有其他媒体播放器和音频

提问于
浏览
1

我正在开发一个即按即说应用程序,如果接收器连接到互联网,接收器将从发送者那里获得实时流式音频消息 . 现在一切正常,除了一个问题是:每当谷歌音乐或youtube等任何其他应用程序正在播放音频时,如果我通过应用程序收到音频通知或消息,则两个音频都以并行方式播放 . 我正在为应用程序使用VoiceLayer库并播放消息音频,他们使用VoiceLayerMessagePlayer . 当我在我的应用程序中收到通知或语音消息时,有什么办法可以暂停其他媒体播放器吗?我查看了互联网,发现OnAudioFocusChangeListener可能会有所帮助,但没有得到关于其实现的正确示例 . 如果您需要更多信息,请告诉我 . 提前致谢 .

2 回答

  • 0

    无论是否收到/丢失音频焦点(管理音频焦点),都应使用AudioManager服务接收通知 . 我在一个项目中做了类似的事情,当我的应用程序开始播放时,Google Play暂停,反之亦然 . 使用以下代码控制媒体播放,例如(活动或服务)

    Stop MediaPlayer when an other app play music

  • 0

    请检查下面的代码它是否正常工作 .

    AudioManager am = null;
    
    // Request focus for music stream and pass 
    AudioManager.OnAudioFocusChangeListener
    // implementation reference
    int result = am.requestAudioFocus(this, AudioManager.STREAM_MUSIC, 
                    AudioManager.AUDIOFOCUS_GAIN);
    
    if(result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED)
    {
        // Play
    }
    
    // Implements AudioManager.OnAudioFocusChangeListener
    
    @Override
    public void onAudioFocusChange(int focusChange) 
    {
        if(focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT)
        {
            // Pause
        }
        else if(focusChange == AudioManager.AUDIOFOCUS_GAIN)
        {
            // Resume
        }
        else if(focusChange == AudioManager.AUDIOFOCUS_LOSS)
        {
            // Stop or pause depending on your need
        }
    }
    

    希望这可以帮助您并解决您的问题 .

相关问题