Android(安卓)音乐播放
16lz
2021-01-26
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 { 15 private MediaPlayer mediaPlayer; 16 // 当前歌曲播放索引 17 private int songIndex = 0; 18 // 歌曲播放列表 19 private ArrayListsongArrayList; 20 // 是否开始播放 21 private boolean play = false; 22 // 回调 23 private MusicCallBack callBack; 24 25 /*** 26 * 音乐播放构造函数 27 * 28 * @param playList 29 * 播放列表 30 * @param callBack 31 * 回调函数 用于传回当前播放曲目 32 */ 33 public MusicPlay(ArrayList playList, MusicCallBack callBack) 34 { 35 this.callBack = callBack; 36 songArrayList = playList; 37 38 mediaPlayer = new MediaPlayer(); 39 mediaPlayer.setOnCompletionListener(new OnCompletionListener() { 40 41 // 播放完毕 42 @Override 43 public void onCompletion(MediaPlayer arg0) 44 { 45 // 播放完毕直接下一首 46 nextSong(); 47 48 } 49 }); 50 51 } 52 53 /*** 54 * 下一首 55 */ 56 public void nextSong() 57 { 58 59 if (songIndex < songArrayList.size() - 1) 60 { 61 songIndex++; 62 songPlay(); 63 } else 64 { 65 // 播放第一首 66 songIndex = 0; 67 songPlay(); 68 69 } 70 } 71 72 /** 73 * 上一首 74 */ 75 public void upSong() 76 { 77 // 当前等于第一首 78 if (songIndex == 0) 79 { 80 // 播放最后一首 81 songIndex = songArrayList.size() - 1; 82 songPlay(); 83 } else 84 { 85 86 songIndex--; 87 songPlay(); 88 89 } 90 } 91 92 /*** 93 * 播放 94 */ 95 private void songPlay() 96 { 97 try 98 { 99 if (songArrayList.size() > 0)100 {101 play = true;102 mediaPlayer.reset();103 mediaPlayer.setDataSource(songArrayList.get(songIndex));104 mediaPlayer.prepare();105 mediaPlayer.start();106 107 if (this.callBack != null)108 {109 // 显示当前播放歌曲110 callBack.currentPlayer(songArrayList.get(songIndex)111 .toString());112 }113 }114 }115 116 catch (Exception e)117 {118 e.printStackTrace();119 }120 121 }122 123 /***124 * 播放暂停 适用于播放暂停都是一个按钮125 */126 public void pausePlay()127 {128 if (mediaPlayer.isPlaying())129 {130 mediaPlayer.pause();131 132 } else133 {134 // 判断是否已经播放 如果已经播放则当前是暂停 则调用继续播放135 if (play)136 {137 mediaPlayer.start();// 继续播放138 } else139 {140 // 首次播放141 songPlay();142 }143 }144 }145 146 /**147 * 设置音量148 * 本身有两个参数 left and right 这里我就设同一个值149 * @param ve 范围 0.0-1.0150 */151 public void setVolume(float ve)152 {153 mediaPlayer.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-1310 *11 */12 public class SearchFile13 {14 /**15 * 文件列表16 */17 private static ArrayListlstFile = new ArrayList (); 18 /***19 * 获取文件20 * 21 * @param Path 要搜索的目录22 * @param Extension 扩展名23 *24 */25 public static ArrayList GetFiles(String Path, String Extension) 26 {27 File[] files = new File(Path).listFiles();28 if (files == null)29 return lstFile;30 for (int i = 0; i < files.length; i++)31 {32 File f = files[i];33 if (f.isFile())34 {35 System.out.println("文件:" + f.getPath());36 if (f.getPath()37 .substring(f.getPath().length() - Extension.length())38 .equals(Extension)) // 判断扩展名39 lstFile.add(f.getPath());40 41 } else if (f.isDirectory() && f.getPath().indexOf("/.") == -1) // 忽略点文件(隐藏文件/文件夹)42 GetFiles(f.getPath(), Extension);43 }44 45 return 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 MusicCallBack10 {11 void currentPlayer(String str);12 13 }
更多相关文章
- 【Android(安卓)进阶】Iconfont 图标的使用以及自定义
- android 遇到Error:Execution failed for task ':app:processDeb
- 如何解决向eclipse导入android project时遇到错误“Invalid proj
- Android(安卓)5.0后图片报错:libpng warning: iCCP: Not recogniz
- android一个LinearLayout中具有几个控件,想要使那几个控件在Linea
- Android(安卓)开发之录音与播放
- android studio 如何清理没有用到的资源文件
- 〖Android〗scp替换脚本
- gradle统一管理版本号