当前位置: 首页 > 知识库问答 >
问题:

如何停止mediaplayer而在后台播放?

谯和煦
2023-03-14

我正在android上开发一个音乐播放器,该应用程序有两个活动(MainActivity和PlayActivity)。在Main活动中,我有一个包含歌曲列表的列表视图,在PlayActivity中,我有一个按钮来收听和暂停音乐。问题是,当我返回MainActivity并从listview中选择一首新歌时,第一首歌会继续在后台播放,而第二首歌也会开始播放。选择新歌曲时,如何停止第一首歌曲?(我不想让mediaplayer停止,我只想在从listview中选择另一首歌曲时停止音乐,并在PlayActivity中播放一首新歌曲)

编辑:我正在使用AsyncTask在PlayActivity:mp上启动mediaplayer。prepareAsync();

共有3个答案

凤明朗
2023-03-14

从这里开始

MediaPlayer不是线程安全的。玩家实例的创建和所有访问应该在同一个线程上。

这意味着您必须在整个应用程序中维护一个媒体播放器实例(根据您的要求)。我不知道您是如何实现媒体播放器的(服务/同步任务等)。当您选择一首新歌时,您需要访问该实例,并用选定的歌曲替换现有歌曲。

傅和璧
2023-03-14
private void playMusic() {
    if (mp != null) {
        if (mp.isPlaying()) {
            mp.stop();
            mp.release();

            MediaPlayer copyMp = new MediaPlayer();

            try {
                copyMp.setDataSource("/path");
                mp = copyMp;
                mp.prepare();
                mp.start();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
丌官高远
2023-03-14

您可以尝试停止MediaPlayer,当onBackPree()

MediaPlayer  mp ; // mp is your MediaPlayer

@Override
public void onBackPressed() {
    if (mp != null) {
        mp.stop();
        mp.release();
        mp = null;
    }
    super.onBackPressed();
}
 类似资料:
  • 在我的一个活动中,有一个使用mediaPlayer播放音乐的按钮。它还可以选择在后台播放音乐,或者在活动结束时停止。 我用这个代码。 这很好用。现在的问题是,当用户返回活动并按下播放按钮时,它会启动一个新的mediaPlayer并播放新的音乐。当新音乐开始播放时,我想在后台停止播放以前的音乐。 这是我的代码 以及MediaPlayer声明 在创建之前

  • 我创建的Android应用程序包含2个按钮,点击每个按钮播放mp3文件。问题是,当我播放按钮1时,它播放声音1,当我单击按钮2时,它播放声音2。 我检查其他玩家的每个按钮是否正常工作,然后停止并播放单击的按钮 但是,如果我两次单击同一个按钮,则会将第一个音频保持在后台播放,然后再次播放另一个音频 我试图检查并停止它,但它不起作用! 我想,如果我点击按钮1,它将播放声音,如果再次点击它,它将停止播放

  • 我有一个ListView,里面有一些项目,每个项目都播放一定的声音。这是代码: 如果我点击一个项目,它开始播放,然后在我之前点击的项目完成播放之前点击另一个项目,MediaPlayer只会同时播放两种声音。如果我在MediaPlayer停止()播放以前的声音并开始播放新的声音,那么在它停止播放之前我已经单击了该项目? 我尝试在try之前添加player.stop(),这样每次单击一个项目时,Med

  • 问题内容: 我正在使用Videogular来显示视频。当用户点击“播放”按钮以播放新视频时,能否帮助我停止/暂停其他视频?因此,一次只能让用户一次播放一个视频。 系统应自动停止正在后台播放的其他视频并播放新视频 谢谢 问题答案: 您可以分别为每个播放器获取所有API,并监听状态变化: 在您的控制器中:

  • 问题内容: 我有一个媒体播放器服务,可在整个应用程序的后台播放音乐,例如: 问题在于,当用户更改应用程序或进入手机主屏幕(应用程序在后台运行)时,音乐仍在播放。 我试图停止它和方法,但是当我更改活动时这会停止音乐,这是我不希望的(我希望音乐在用户浏览活动时继续播放)。 更新资料 我尝试了广播: 我加了 在音乐服务的onCreate和接收事件的方法中: 在应用程序类中,我这样做: 但是音乐不会恢复

  • 问题内容: 我正在通过SSH(Putty)在Linux机器上工作。我需要让一个进程在夜间运行,所以我想可以通过在后台启动该进程(在命令末尾使用&号)并将stdout重定向到文件来实现。 令我惊讶的是,这行不通。一旦关闭“腻子”窗口,该过程就会停止。 如何防止这种情况发生? 问题答案: 检出“ nohup ”程序。