android - Music Player App - 避免两个音乐播放器同时播放

标签 android audio-player exoplayer android-7.1-nougat android-music-player

我正在使用 ExoPlayer 开发歌曲播放器应用程序。 我目前遇到的问题是,在 Android 7.x 设备上,用户能够同时收听两个播放器。这似乎是新 Android 版本的问题。

我想知道是否有可能避免这种行为,使用户在我的应用程序上收听媒体时无法收听两个播放器。

最佳答案

您可能需要在应用程序中管理音频焦点。 你可以在这里看看: https://developer.android.com/guide/topics/media-apps/audio-focus.html

To avoid every music app playing at the same time, Android introduces the idea of audio focus. Only one app can hold audio focus at a time.

When your app needs to output audio, it should request audio focus.

AudioManager mAudioManager_ = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
AudioManager.OnAudioFocusChangeListener mOnAudioFocusChangeListener_ = new AudioManager.OnAudioFocusChangeListener()
        {   @Override
            public void onAudioFocusChange (int focusChange)
            {   switch (focusChange)
                {   case AudioManager.AUDIOFOCUS_GAIN:
                        Log.e("DEBUG", "##### AUDIOFOCUS_GAIN");
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
                        Log.e("DEBUG", "##### AUDIOFOCUS_LOSS_TRANSIENT");
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
                        Log.e("DEBUG", "##### AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK");
                        break;
                    case AudioManager.AUDIOFOCUS_LOSS:
                        Log.e("DEBUG", "##### AUDIOFOCUS_LOSS");
                        break;
                }
            }
        };


if (mAudioManager_.requestAudioFocus(mOnAudioFocusChangeListener_, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN) == AudioManager.AUDIOFOCUS_REQUEST_GRANTED)
{   // start play
    // ...
    mAudioManager_.abandonAudioFocus(mOnAudioFocusChangeListener_);
}

关于android - Music Player App - 避免两个音乐播放器同时播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47348768/

相关文章:

Android - 带有自定义 BaseAdapter 的 Gridview,创建 onclicklistener

android - 如何重用使用 startForeground 创建的通知中的顶级 Activity ?

android - MQTT Paho 客户端不会自动重新连接到 Android 服务上的代理

android - 无法更新 ADT

android - 从 WebView 播放音频

android - ExoPlayer:删除播放按钮和时间线行之间的冗余空格

android - 如何在 Nativescript ExoPlayer 中使用事件?

android - 如何在 App 中使用原生均衡器

android - 如何在Android中使用mediastore.audio获取具有音频文件的目录的名称

android - 在流中区分 HLS 内容