在我的一项活动中,有一个按钮可以使用mediaPlayer播放音乐。此外,它还可以选择在后台播放音乐或在活动结束时停止播放。
我使用此代码。
@Override
protected void onStop() {
super.onStop();
SharedPreferences perfs = PreferenceManager
.getDefaultSharedPreferences(getApplicationContext());
if (!perfs.getBoolean("bg_play", true)) {
mediaPlayer.stop();
mediaPlayer.release();
}
}
完美无缺。现在问题是当用户重新开始活动并按下播放按钮时,它会启动一个新的mediaPlayer并播放新音乐。我想在新音乐开始时停止以前在后台播放的音乐。
这是我的代码
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
答案 0 :(得分:0)
我是编程的初学者所以我可能错了。 ..不会让mefiaPlayer变量静态工作吗?但我认为问题是当你回到活动时,活动正在重建。