数据展示后需要实现播放功能,播放采用的是在后台开启一个service
这里先不写service的内容,只说基本的播放暂停和下一曲上一曲的逻辑
具体实现方式如下:
//播放/暂停 public boolean playstop() { if (index != -1) {//判断是不是第一次进入 //暂停/播放 if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); return false; } else { mediaPlayer.start(); timer();//开启定时器 return true; } } else { Toast.makeText(this, "未选中任何歌曲", Toast.LENGTH_SHORT).show(); return false; } } /** * 上一曲 * 下一曲 */ public int playcontrol(int playsong) { switch (playsong) { case 1: if (index != -1) {//判断是不是刚进入 //上一曲 while (musicList.get(--index).type == 0) { //到最后一个元素 if (index == 0) { index = musicList.size(); } } play(); } else { Toast.makeText(this, "未选中任何歌曲", Toast.LENGTH_SHORT).show(); } break; case 3: //下一曲 if (index != -1) {//判断是不是刚进入 if (index == musicList.size() - 1) { //歌曲是最后一个元素 从第一个元素开始遍历 index = 0; while (musicList.get(++index).type == 0) { } play(); } else { //歌曲不是最后一个元素 while (musicList.get(++index).type == 0) { //到最后一个元素 if (index == musicList.size() - 1) { index = 0; } } play(); } } else { Toast.makeText(this, "未选中任何歌曲", Toast.LENGTH_SHORT).show(); } break; } return index; } /** * 歌曲播放完成监听 * * @param mediaPlayer */ @Override public void onCompletion(MediaPlayer mediaPlayer) { if (index != -1) { if (index == musicList.size() - 1) { //歌曲是最后一个元素 从第一个元素开始遍历 index = 0; while (musicList.get(++index).type == 1) { play(); } } else { //歌曲不是最后一个元素 while (musicList.get(++index).type == 0) { //到最后一个元素 if (index == musicList.size() - 1) { index = 0; } } play(); } //将播放的音乐序号用广播发送 Intent indexIntent = new Intent("playindex"); indexIntent.putExtra("musicindex", index); localBroadcastManager.sendBroadcast(indexIntent); } }