如何在安卓媒体播放器中停止和播放新歌曲



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

这是我的listview onItemClickListener()

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;
        }
    }

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

既然你已经调用了stopPlay方法,理想情况下它应该停止。尝试添加此行代码

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

不确定这是否可以解决问题。

也试试这个

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

而不是

if (mp != null)

除了之前的答案

将媒体播放器定义为静态

静态媒体播放器 mp;

最新更新