如何在 android 的 mediaplayer 中停止和播放新歌曲?

Posted

技术标签:

【中文标题】如何在 android 的 mediaplayer 中停止和播放新歌曲?【英文标题】:How to stop and play new songs in mediaplayer in android? 【发布时间】:2015-03-09 15:56:36 【问题描述】:

我在手机里有一个listview 的所有音乐。每当用户单击 listview 的项目时,它每次都会启动我的播放器类的相同活动。用户选择的第一首音乐播放效果很好。但问题是当用户选择第二首音乐时,它会开始播放新一首,而不会停止前一首。所以结果是两首音乐一起播放。

这是我的listviewonItemClickListener()

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() 
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) 

                TextView tv = (TextView) view;
                String songId = tv.getText().toString();
                Intent i = new Intent(getActivity(), player.class);
                i.putExtra("id", songId);

                startActivity(i);
            
);

以及我的播放器类的主要部分:

private MediaPlayer mp;


Bundle extras = getIntent().getExtras();
String songId = null;
if(extras != null)
      songId = extras.getString("id");
      play.setBackgroundResource(R.drawable.pause);


find(songId);

private void find(String songName) 
        for(int t = 0; t < songs.size(); t++)
            if(("" + songs.get(t)).endsWith(songName))   //songs, an ArrayList of music files path
                Uri myUri = Uri.parse("" + songs.get(t));
                stopPlaying();
                mp = MediaPlayer.create(this, myUri);
                mp.start();
                break;
            
        


private void stopPlaying() 
        if (mp != null) 
            mp.stop();
            mp.release();
            mp = null;
        
    

我尝试了几种方法来解决这个问题。但我不明白我错过了什么。如果需要,我可以提供完整的代码。

【问题讨论】:

请添加您的完整代码 :-) @Xry pastebin.com/7G70imeV 【参考方案1】:

由于您调用了 stopPlaying 方法,理想情况下它应该停止。试试添加这行代码

mp.setLooping(false);mp.start(); 之前

不确定这是否能解决问题。

也试试这个

 if(mp!=null && mp.isPlaying())

而不是

if (mp != null)

【讨论】:

【参考方案2】:

除了之前的回答

将您的媒体播放器定义为静态

静态媒体播放器mp;

【讨论】:

以上是关于如何在 android 的 mediaplayer 中停止和播放新歌曲?的主要内容,如果未能解决你的问题,请参考以下文章

在 Android 中使用 MediaPlayer 播放音频文件

如何在 android 的 mediaplayer 中停止和播放新歌曲?

Android 如何更改默认 VideoView / MediaPlayer 全屏?

Android -- MediaPlayer内部实现简析

Android MediaPlayer - 如何在 STREAM_ALARM 中播放?

android的MediaPlayer.create方法怎么用