在我的一项 Activity 中,有一个使用 mediaPlayer 播放音乐的按钮。它还可以选择在后台播放音乐或在 Activity 完成时停止。
我使用此代码。
@Override
protected void onStop() {
super.onStop();
SharedPreferences perfs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
if (!perfs.getBoolean("bg_play", true)) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
效果很好。现在的问题是,当用户返回 Activity 并按下播放按钮时,它会启动一个新的媒体播放器并播放新音乐。我想在新音乐开始时停止在后台运行以前的音乐。
这是我的代码
private void myMediaPlayer() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
else {
mediaPlayer.stop();
mediaPlayer.reset();
try {
mediaPlayer.setDataSource(Environment.getExternalStorageDirectory()+"file.mp3");
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
mediaPlayer.prepare();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.start();
}
}
以及 MediaPlayer 声明
MediaPlayer mediaPlayer=new MediaPlayer();
在onCreate
之前
最佳答案
我是编程初学者,所以我可能是错的。 .. 使 mefiaPlayer 变量静态不起作用吗?但我认为问题在于,当您返回 Activity 时, Activity 正在重建。
关于java - 在后台停止 MediaPlayer - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656910/