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 {
 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

Android 音乐播放的相关文章

android音乐播放器开发教程

android音乐播放器开发教程 android音乐播放器开发教程,布布扣,bubuko.com

[Android]音乐播放器总结

1. MediaPlayer要播放的文件主要包括3个来源:a. 用户在应用中事先自带的resource资源例如:mp = MediaPlayer.create(this, R.raw.test);b. 存储在SD卡或其他文件路径下的媒体文件例如:mp.setDataSource("/sdcard/test.mp3");c. 网络上的媒体文件例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3"

android音乐播放器开发 SweetMusicPlayer 智能负载直插式歌词

在一份书面的使用MediaPlayer播放音乐, http://blog.csdn.net/huweigoodboy/article/details/39862773.假设没有本地歌词怎么办?如今来将一下载入在线歌词.好了,还是用那张图. 在实现这个功能的时候,lz尝试过baidu api,歌词迷api,后来选用了歌词迷api.尽管还是资源不全.并且还有非常多错误. 特别头疼的是有时候歌词竟然不分行.解析起来简直难受. 歌词迷api歌词查询地址:http://geci.me/api/lyric/

自编Win8风格Android音乐播放器应用源码(单机版)

用闲暇的两天时间,研究编写了一个类Win8风格的android音乐播放器,实现了大部分基本功能.下面看具体描述: 基本实现功能:注意事项:Android系统版本须在2.2以上,保证手机安装有SD卡(部分图标来至qq音乐和百度音乐)界面组成:欢迎界面:淡入,随机图片 由于代码不少,所以在这里贴出来也不太现实,嗯,那就上链结吧,请各位到源码天堂网站上下载吧: http://code.662p.com/view/4733.html 主界面:4个tab标签页,4宫格: --  歌曲列表界面:从sd卡中扫

android音乐播放器源码

最近研究android音乐播放器,弄了一个,还可以,可以实现播放.暂停.拖动进度等功能. 源码地址:http://download.csdn.net/detail/a358763471/8728855

Android音乐播放器源码(歌词.均衡器.收藏.qq5.0菜单.通知)

Android音乐播放器(歌词.均衡器.收藏.qq5.0菜单.通知) 一款Android音乐播放器源码,基本功能都实现了 qq5.0菜单(歌词.均衡器.收藏.qq5.0菜单.通知) 只有向右滑动出现,菜单键和指定按钮都还没有添加. 下载地址:http://www.devstore.cn/code/info/1144.html 运行截图:     热门源码下载: 高仿京东商城 Android快速开发不可或缺的11个工具类 Android快速开发框架LoonAndroid Android应用源码比较

如何写一个正经的Android音乐播放器 三

实现音乐的播放. 为了快速实现音乐播放,我们使用MediaPlayer而不用SoundPool,据说SoundPool比MediaPlayer的自由度更大.不过,根据我的了解,soundpool并不支持音频的解码,得自己去解码,而MeidaPlayer已经内置了一些解码方案,我看到的是,音频除了ape无损格式,都能播放. 你需要阅读: MediaPlayer API: http://developer.android.com/reference/android/media/MediaPlayer

如何写一个正经的Android音乐播放器 一

以前写过很多次音乐播放器,但是总有一些问题出现,例如: 1,音乐长时间播放问题(即便是放在service中去播放,依然会被杀死): 2,音乐的播放进度如何掌握?(如何利用mediaplayer.getCurrentPosition()来有效的通知界面变更进度?): 3,在我以往的经验中,音乐播放完毕下一曲时候,经常出现当前音乐播放还差几秒钟的时候就下一曲了的情况. 从网上找到教程中,通常都是一个播放器的demo,简单的直接把MediaPlayer放在了一个Activity中去操作,稍有良心的教程

android音乐播放器的竞品分析

迄今为止最长的一篇博客,各位看官笑纳~~ 本次分析基于android平台,选取了几款我体验过的播放器进行比较分析.主要分为两类,一类是大而全的,功能全面,可满足用户管理歌曲.导入导出歌单等多方面需求,不仅仅是听歌,另一类是小而简的,操作简单,让用户专注听歌. 1. QQ音乐          版本:5.2.1.15 特点:这款产品在PC端就有庞大的用户基础,有一定的用户粘性,手机端是web端的延伸.其性能和体验都很不错,1. 曲库强大,可选不同播放音效和音质:2. 独具Qplay功能,可将手机里

做一个Android音乐播放器是遇到的一些困难

最近再做一个安卓的音乐播放器,是实验室里学长派的任务,我是在eclipse上进行开发的,由于没有android的基础,所以做起来困难重重. 首先是布局上的困难 1.layout里的控件属性不熟悉 2.想做一个音乐列表做不出来知道要用Listview控件,网上也找了许多的音乐播放器的代码,但导入项目中总会出错,所以想在这里请教各位 3.除了布局有困难外,实现相关功能也有困难,由于基础不行所以我并不想也做不出网上音乐播放器那么多的功能,我只想要我的播放器有播放,暂停,上一曲,下一曲的效果就行了,这还