在后台停止MediaPlayer - Android

时间:2014-02-09 08:26:02

标签: java android android-mediaplayer

在我的一项活动中,有一个按钮可以使用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

1 个答案:

答案 0 :(得分:0)

我是编程的初学者所以我可能错了。 ..不会让mefiaPlayer变量静态工作吗?但我认为问题是当你回到活动时,活动正在重建。