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 ArrayList<String> songArrayList; 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<String> 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 } else 133 { 134 // 判断是否已经播放 如果已经播放则当前是暂停 则调用继续播放 135 if (play) 136 { 137 mediaPlayer.start();// 继续播放 138 } else 139 { 140 // 首次播放 141 songPlay(); 142 } 143 } 144 } 145 146 /** 147 * 设置音量 148 * 本身有两个参数 left and right 这里我就设同一个值 149 * @param ve 范围 0.0-1.0 150 */ 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-13 10 * 11 */ 12 public class SearchFile 13 { 14 /** 15 * 文件列表 16 */ 17 private static ArrayList<String> lstFile = new ArrayList<String>(); 18 /*** 19 * 获取文件 20 * 21 * @param Path 要搜索的目录 22 * @param Extension 扩展名 23 * 24 */ 25 public static ArrayList<String> 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 MusicCallBack 10 { 11 void currentPlayer(String str); 12 13 }
时间: 2024-10-12 20:06:22