Android开发如何做一个简单的音乐播放器,首先我们先要知道用到的知识点有哪些。

1.MediaPlayer:可以播放本地资源、sd卡内存资源以及网络uri资源,在这里我们播放sd卡上的音乐资源.

2.Contentresolver:如何获取本地音乐资源。

3.如何通过播放/暂停/上一首/下一首/切换播放资源。

了解上述问题后,我们开始写代码:

1.获取本地音乐资源列表:

1).读取sd卡上的内容我们需要在配置文件中添加权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>

2).获取本地资源文件列表:

ContentResolver contentResolver=getContentResolver();

//查询本地资源文件
 Cursor c=contentResolver.query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,null,null,null);

if (c!=null){
            int i=0;
            while(c.moveToNext()){
                Map<String,Object> map= new HashMap<String, Object>();//存放在map中显示在listview列表
                //歌曲名
                name[i]=c.getString(c.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));

//歌曲id
                id[i]=c.getInt(c.getColumnIndex(MediaStore.Audio.Media._ID));
                //作者
                 artical[i]=c.getString(c.getColumnIndex(MediaStore.Audio.Media.ARTIST));
                //路径
                url[i]=c.getString(c.getColumnIndex(MediaStore.Audio.Media.DATA));
                map.put("SongName", name[i]);
                map.put("id", id[i]);
                map.put("Artical", artical[i]);
                map.put("url", url[i]);
                list.add(map);
                i++;
            }

通过上述代码就可将本地资源文件显示在listview列表中。

3.点击播放按钮:

点击播放按钮时,有两种可能:1).当前音乐处于暂停状态,点击播放继续播放。2).当前正在播放音乐,点击播放,音乐从头播放。设置标记量isPause=false;如果当前是处于停止状态,则继续播放:

if (isPause){
            mediaPlayer.start();
            isPause=false;
        }

如果当前不是处于暂停状态,则重置当前音乐,再次播放。

if (mediaPlayer.isPlaying()){
                mediaPlayer.stop();
                mediaPlayer.reset();
            }
            Uri conuri= ContentUris.withAppendedId(android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,id[index]);
            mediaPlayer.setDataSource(getApplicationContext(),conuri);
            mediaPlayer.prepareAsync();
            isPause=false;

下一首或上一首更改当前音乐标示index即可。

测试图如下:

源码:https://github.com/huangolinqing/Music1/

欢迎关注技术公众号,微信号搜索ColorfulCode 代码男人

分享技术文章,投稿分享,不限技术种类,不限技术深度,让更多人因为分享而受益。

Android开发做一个简单的音乐播放器相关推荐

  1. 用Android做一个简单的音乐播放器(上)

    这一学期要结束了,我用Android写了一个音乐播放器,算是给它画上个完美的句号,里面有登录,注册,这个APP还有很多功能没完善,有时间了在加一些料.效果图如下: 登录.注册直接用的是Android自 ...

  2. C#做一个简单的音乐播放器

    界面: 点击打开单选音乐文件或多选,音乐文件名被添加到旁边的listBox控件中,按上一曲下一曲切换歌曲 添加的引用: using System.IO; using System.Media; 设置的 ...

  3. Android开发本地及网络Mp3音乐播放器(十二)创建NetMusicListAdapter、SearchResult显示网络音乐列表

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51290181 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现NetM ...

  4. Android开发本地及网络Mp3音乐播放器(十三)网络音乐搜索功能实现,歌名歌手专辑名搜索

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51298411 觉得博文有用,请点赞,请留言,请关注,谢谢!~ 实现功能: 实现网络音乐 ...

  5. 自制一个简单的音乐播放器

    这两天刚学完了contentprovider和service组件,就综合下所学的,自制了一个简单的音乐播放器. 代码如下: 主activity代码 public class MainActivity ...

  6. 用Qt写一个简单的音乐播放器(三):增加界面(播放跳转与音量控制)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  7. Android开发本地及网络Mp3音乐播放器(二十)歌曲下载完成后通知主界面更新本地音乐

    转载请注明出处:http://blog.csdn.net/iwanghang/article/details/51448597 项目源码(打赏5积分请点这边):http://download.csdn ...

  8. 用Qt写一个简单的音乐播放器(六):显示歌词(正则表达式)

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

  9. 用Qt写一个简单的音乐播放器(四):歌曲浏览、上一曲、下一曲

    一.前言 在用Qt写一个简单的音乐播放器(一):使用QMediaPlayer播放音乐中,我们已经知道如何去使用QMediaPlayer播放音乐. 在用Qt写一个简单的音乐播放器(二):增加界面(开始和 ...

最新文章

  1. 我所理解的OOP——UML六种关系
  2. 关于Mysql5.6 Failed to open file error2的记录
  3. SQL server 2005中无法新建作业(Job)的问题
  4. 写得蛮好的linux学习笔记(二)
  5. [转贴]漫谈计算机图书翻译的四种境界
  6. 腾讯云安装samba服务器无法连接问题
  7. 过滤器java面试_过滤器监听器面试题都在这里
  8. C# 能否获取一个对象所占内存的大小?
  9. 全球增长最快域名解析商Top10:中国占据四席
  10. vlc 在ubuntu 14下的linux版本编译
  11. Linux下的shell与make
  12. LCN分布式事务框架实战
  13. 线程之成员变量的线程共享
  14. Java程序性能优化(让你的Java程序更快、更稳定)
  15. 天正CAD启动时显示服务器名称为空,如何解决天正建筑2014启动时出现error
  16. python程序员面试算法宝典pdf-Python程序员面试笔试宝典
  17. CSS3 实现3D特效
  18. android 画图
  19. 天龙DBP-1611UD蓝光播放机回顾
  20. 01、第一个简单的BUCK电路的计算与仿真

热门文章

  1. Simulink —— Band-Limited White Noise模块的使用
  2. linux ulimit 调优
  3. 计算机术语横幅迎新,迎新横幅的标语(精选50句)
  4. python中的随机函数random的用法示例
  5. 机器学习之贝叶斯算法
  6. vue vue-amap 报错TypeError: v.w.uh is not a constructor
  7. 游戏内统一支付系统设计与实现
  8. 嵌入式linux的网络配置,嵌入式linux网络配置
  9. 无需第三方轻松实现Mac上Safari 超长截图
  10. 开源性能测试平台stressTestSystem搭建