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 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 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 ArrayList lstFile = 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 }

 

更多相关文章

  1. 【Android(安卓)进阶】Iconfont 图标的使用以及自定义
  2. android 遇到Error:Execution failed for task ':app:processDeb
  3. 如何解决向eclipse导入android project时遇到错误“Invalid proj
  4. Android(安卓)5.0后图片报错:libpng warning: iCCP: Not recogniz
  5. android一个LinearLayout中具有几个控件,想要使那几个控件在Linea
  6. Android(安卓)开发之录音与播放
  7. android studio 如何清理没有用到的资源文件
  8. 〖Android〗scp替换脚本
  9. gradle统一管理版本号

随机推荐

  1. android开关飞行模式的方法
  2. 一个项目搞明白Android(安卓)启动模式和t
  3. android 中apk如何防止反编译?
  4. Android(安卓)API——自定义组件(Custom C
  5. android API key 如何获取
  6. 详解Android获取系统内核版本的方法与实
  7. Android源码在线阅读
  8. Android应用程序的调试方法
  9. Android第一行代码(第二版)
  10. Android(安卓)Bundle类