【发布时间】:2021-03-26 08:56:10
【问题描述】:
我想制作一个简单的音乐播放器应用,可以播放选定播放列表中的歌曲。我成功检索了设备歌曲的详细信息。 我有一个多首歌曲的播放列表。我想一次只播放一首歌。但是当我点击其他已经播放的歌曲时,歌曲并没有停止或暂停。请给出一个完整的解决方案。
ArrayList<SongModel> list;
SongModel 模型类
public class SongModel {
String songImg,songName,songPath;
Boolean isClick;
public SongModel(String songImg, String songName, String songPath, Boolean isClick) {
this.songImg = songImg;
this.songName = songName;
this.songPath = songPath;
this.isClick = isClick;
}
public Boolean getClick() {
return isClick;
}
public void setClick(Boolean click) {
isClick = click;
}
public String getSongPath() {
return songPath;
}
public void setSongPath(String songPath) {
this.songPath = songPath;
}
public String getSongImg() {
return songImg;
}
public void setSongImg(String songImg) {
this.songImg = songImg;
}
public String getSongName() {
return songName;
}
public void setSongName(String songName) {
this.songName = songName;
}
}
适配器中使用的MediaPlayer
MediaPlayer mediaPlayer = MediaPlayer.create(context, Uri.parse(list.get(position).getSongPath()));
if(list.get(position).getClick()){
holder.imgv_pause.setVisibility(View.VISIBLE);
holder.imgv_play.setVisibility(View.GONE);
try {
mediaPlayer.start();
} catch (Exception e) {
e.printStackTrace();
}
} else {
list.get(position).setClick(false);
holder.imgv_pause.setVisibility(View.GONE);
holder.imgv_play.setVisibility(View.VISIBLE);
try {
mediaPlayer.pause();
} catch (Exception e) {
e.printStackTrace();
}
}
holder.imgv_play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (int i=0;i<list.size();i++){
list.get(i).setClick(false);
}
list.get(position).setClick(true);
notifyDataSetChanged();
}
});
holder.imgv_pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
list.get(position).setClick(false);
notifyDataSetChanged();
}
});
}
【问题讨论】:
-
检查此参考是否有帮助:stackoverflow.com/questions/52911667/…
标签: java android android-mediaplayer