gpt4 book ai didi

android - 当其他应用播放音乐时停止 MediaPlayer

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:21:00 27 4
gpt4 key购买 nike

在我的应用中,我有一个播放流媒体音乐的媒体播放器:

globalVariable.setPlaying(true);
final ProgressDialog mProgressDialog;
mProgressDialog = ProgressDialog.show(MainActivity.this, "Chargement en cours", "La musique est en train de charger", true);

String url = "http://178.32.181.86:18000";
globalVariable.mp.setAudioStreamType(AudioManager.STREAM_MUSIC);

try {
globalVariable.mp.setDataSource(url);
} catch (IOException e) {
e.printStackTrace();
}

globalVariable.mp.prepareAsync();

globalVariable.mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
bouton.setImageResource(R.drawable.pause);
mProgressDialog.hide();
}
});

它工作得很好。当我打开我面前的另一个应用程序时,播放器会继续播放,这很棒。但是,如果我启动另一个播放器(如 GooglePlayMusic 或 youtube),我的应用程序不会停止播放音乐,并且会同时播放两种声音。

因此,如果另一个应用需要播放音乐,我希望我的音乐停止播放。

非常感谢

最佳答案

您应该使用 AudioManager 服务来接收通知您是否收到/失去音频焦点 (Managing audio focus)。我在一个项目中做过类似的事情,当我的应用程序开始播放时,Google Play 暂停,反之亦然。在您控制媒体播放的地方使用以下代码( Activity 或服务)-

// Add this code in a method

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
}
}

关于android - 当其他应用播放音乐时停止 MediaPlayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24474929/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com