java - 在后台停止 MediaPlayer - Android

标签 java android android-mediaplayer

在我的一项 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/

相关文章:

java - 无法理解 String.replaceAll 非贪婪行为

android - 用于代码生成的 ANTLR Tool 版本 4.5.3 与当前运行时版本 4.7.1 不匹配

java - Android相机存储图像(原始): Strange pictures after update

java - hibernate-validator 在版本 4 和 5 中抛出不同的异常

java - Spring AOP : Advice on annotation used over another advice

java - 继续为 Controller 获取 "No default constructor found"

android - 以编程方式设置按钮样式

java - 在 Android 中播放音频时出现故障

java - 停止MediaPlayer的问题

android - SeekBar 不适用于 Android 中的在线流媒体