Android 音乐播放

胸怀万里世界, 放眼无限未来。这篇文章主要讲述Android 音乐播放相关的知识,希望能为你提供帮助。
android简单音乐播放控制代码
 
这个几个月业余时间一直在做一个android项目,里面涉及到了音乐播放功能。很简单那种,播放、暂停、上一曲、下一曲、音量调节等。
音乐播放主要使用的对象是MediaPlayer,这个对象很强大 也提供了很多功能。
mediaplayer 音乐播放主要控制类

1 package com.weizhi.common; 2 3 import java.util.ArrayList; 4 import android.media.MediaPlayer; 5 import android.media.MediaPlayer.OnCompletionListener; 6 7 /*** 8* 音乐播放控制 9* 10* @author wangr 11* @date 2016-6-13 12*/ 13 public class MusicPlay 14 { 15private MediaPlayer mediaPlayer; 16// 当前歌曲播放索引 17private int songIndex = 0; 18// 歌曲播放列表 19private ArrayList< String> songArrayList; 20// 是否开始播放 21private boolean play = false; 22// 回调 23private MusicCallBack callBack; 24 25/*** 26* 音乐播放构造函数 27* 28* @param playList 29*播放列表 30* @param callBack 31*回调函数 用于传回当前播放曲目 32*/ 33public MusicPlay(ArrayList< String> playList, MusicCallBack callBack) 34{ 35this.callBack = callBack; 36songArrayList = playList; 37 38mediaPlayer = new MediaPlayer(); 39mediaPlayer.setOnCompletionListener(new OnCompletionListener() { 40 41// 播放完毕 42@Override 43public void onCompletion(MediaPlayer arg0) 44{ 45// 播放完毕直接下一首 46nextSong(); 47 48} 49}); 50 51} 52 53/*** 54* 下一首 55*/ 56public void nextSong() 57{ 58 59if (songIndex < songArrayList.size() - 1) 60{ 61songIndex++; 62songPlay(); 63} else 64{ 65// 播放第一首 66songIndex = 0; 67songPlay(); 68 69} 70} 71 72/** 73* 上一首 74*/ 75public void upSong() 76{ 77// 当前等于第一首 78if (songIndex == 0) 79{ 80// 播放最后一首 81songIndex = songArrayList.size() - 1; 82songPlay(); 83} else 84{ 85 86songIndex--; 87songPlay(); 88 89} 90} 91 92/*** 93* 播放 94*/ 95private void songPlay() 96{ 97try 98{ 99if (songArrayList.size() > 0) 100{ 101play = true; 102mediaPlayer.reset(); 103mediaPlayer.setDataSource(songArrayList.get(songIndex)); 104mediaPlayer.prepare(); 105mediaPlayer.start(); 106 107if (this.callBack != null) 108{ 109// 显示当前播放歌曲 110callBack.currentPlayer(songArrayList.get(songIndex) 111.toString()); 112} 113} 114} 115 116catch (Exception e) 117{ 118e.printStackTrace(); 119} 120 121} 122 123/*** 124* 播放暂停 适用于播放暂停都是一个按钮 125*/ 126public void pausePlay() 127{ 128if (mediaPlayer.isPlaying()) 129{ 130mediaPlayer.pause(); 131 132} else 133{ 134// 判断是否已经播放 如果已经播放则当前是暂停 则调用继续播放 135if (play) 136{ 137mediaPlayer.start(); // 继续播放 138} else 139{ 140// 首次播放 141songPlay(); 142} 143} 144} 145 146/** 147* 设置音量 148* 本身有两个参数 left and right 这里我就设同一个值 149* @param ve 范围 0.0-1.0 150*/ 151public void setVolume(float ve) 152{ 153mediaPlayer.setVolume(ve, ve); 154} 155 }

顺便附上文件搜索类
1 package com.weizhi.common; 2 3 import java.io.File; 4 import java.util.ArrayList; 5 6 /**** 7* 文件搜索 8* @author wangr 9* date 2016-6-13 10* 11*/ 12 public class SearchFile 13 { 14/** 15* 文件列表 16*/ 17private static ArrayList< String> lstFile = new ArrayList< String> (); 18/*** 19* 获取文件 20* 21* @param Path 要搜索的目录 22* @param Extension 扩展名 23* 24*/ 25public static ArrayList< String> GetFiles(String Path, String Extension) 26{ 27File[] files = new File(Path).listFiles(); 28if (files == null) 29return lstFile; 30for (int i = 0; i < files.length; i++) 31{ 32File f = files[i]; 33if (f.isFile()) 34{ 35System.out.println("文件:" + f.getPath()); 36if (f.getPath() 37.substring(f.getPath().length() - Extension.length()) 38.equals(Extension)) // 判断扩展名 39lstFile.add(f.getPath()); 40 41} else if (f.isDirectory() & & f.getPath().indexOf("/.") == -1) // 忽略点文件(隐藏文件/文件夹) 42GetFiles(f.getPath(), Extension); 43} 44 45return lstFile; 46} 47 48 }

音乐回调接口 用于显示当前播放歌曲
1 package com.weizhi.common; 2 3 /*** 4* 音乐回调接口 5* @author wangr 6* date 2016-6-13 7* 8*/ 9 public interface MusicCallBack 10 { 11voidcurrentPlayer(String str); 12 13 }

【Android 音乐播放】 

    推荐阅读