1.背景

在开发之鱼APP的时候,本来音乐播放器是之鱼中的一个模块,用来播放音乐使用,但是随着项目代码的编写,越来越复杂,决定将其单独的拉出来,制作为单独的APP - 音心播放器 。
        写一个 音乐播放器 可以很好的锻炼自己在Android 高级上的学习 比如 :BroadCastReceiver , Service , Notification ,Activity 等之间的信息传递与控制。

2.数据来源

   因为音乐的资源API不好找,大多数都不提供音乐播放接口,所以选择了易源API(showAPi .com) 中的 QQ音乐接口,用着还行,而且还是免费的,只需要注册,订阅就可以使用了,返回的均是JSON数据。其他的音乐数据API的话,找了很久,应该就只有豆瓣FM 提供的 API了 ,没有使用过,这里就不做过多的评价。
                
   提供的API 包括 : 
    (1)热门榜单 : 可以根据不同的分类信息, 获得不同的 榜单列表数据 ,比如 欧美 ,乡音 ,摇滚 ;不过返回的数据中是没有 专辑图片的 ,可以通过下面的接口 获取专辑图片;
        单条数据展示 :
{"albumid": 1209391,"downUrl": "http://tsmusic24.tc.qq.com/105013301.mp3","seconds": 233,"singerid": 20697,"singername": "原子霏","songid": 105013301,"songname": "芈月传","url": "http://ws.stream.qqmusic.qq.com/105013301.m4a?fromtag=46"}

(2)根据歌曲ID 查询 歌词 :这个用起来还可以,提供了歌词信息,需要自己写一个单独的解析方法,进行解析;

     歌词数据 展示 :
 
{"showapi_res_code": 0,"showapi_res_error": "","showapi_res_body": {"lyric": "[ti:海阔天空 (Edited Version)]
[ar:BEYOND]
[al:Words & Music Final Live With 家驹]
[by:]
[offset:0]
[00:00.92]海阔天空  - BEYOND
[00:02.27]词:黄家驹
[00:03.32]曲:黄家驹
[00:04.30]
[00:19.17]今天我 寒夜里看雪飘过
[00:25.75]怀着冷却了的心窝飘远方
[00:30.77]
[00:31.60]风雨里追赶 雾里分不清影踪
[00:37.82]天空海阔你与我 可会变
[00:43.27]
[00:44.14]多少次迎着冷眼与嘲笑
[00:50.55]从没有放弃过心中的理想
[00:56.02]
[00:56.67]一刹那恍惚 若有所失的感觉
[01:02.65]不知不觉已变淡 心里爱
[01:08.64]
[01:09.66]原谅我这一生不羁放纵爱自由
[01:15.56]
[01:16.40]也会怕有一天会跌倒
[01:22.72]背弃了理想谁人都可以
[01:27.84]
[01:28.51]哪会怕有一天只你共我
[01:33.89]
[01:43.41]今天我 寒夜里看雪飘过
[01:49.76]怀着冷却了的心窝飘远方
[01:54.86]
[01:55.60]风雨里追赶 雾里分不清影踪
[02:01.92]天空海阔你与我 可会变
[02:06.61]
[02:08.70]原谅我这一生不羁放纵爱自由
[02:14.86]
[02:15.55]也会怕有一天会跌倒
[02:21.30]
[02:21.83]背弃了理想谁人都可以
[02:27.17]
[02:28.08]哪会怕有一天只你共我
[02:33.08]
[02:38.06]仍然自由自我
[02:40.57]
[02:41.42]永远高唱我歌
[02:44.42]走遍千里 原谅我这一生不羁放纵爱自由
[02:55.20]
[02:56.14]也会怕有一天会跌倒
[03:02.26]背弃了理想 谁人都可以
[03:07.48]
[03:08.67]哪会怕有一天只你共我
[03:13.58]
[03:14.51]原谅我这一生不羁放纵爱自由
[03:21.27]也会怕有一天会跌倒
[03:26.00]
[03:27.38]背弃了理想谁人都可以
[03:31.94]
[03:33.61]哪会怕有一天只你共我","lyric_txt": "                                 海阔天空            BEYOND      词:黄家驹      曲:黄家驹            今天我   寒夜里看雪飘过      怀着冷却了的心窝飘远方            风雨里追赶   雾里分不清影踪      天空海阔你与我   可会变            多少次迎着冷眼与嘲笑      从没有放弃过心中的理想            一刹那恍惚   若有所失的感觉      不知不觉已变淡   心里爱            原谅我这一生不羁放纵爱自由            也会怕有一天会跌倒      背弃了理想谁人都可以            哪会怕有一天只你共我            今天我   寒夜里看雪飘过      怀着冷却了的心窝飘远方            风雨里追赶   雾里分不清影踪      天空海阔你与我   可会变            原谅我这一生不羁放纵爱自由            也会怕有一天会跌倒            背弃了理想谁人都可以            哪会怕有一天只你共我            仍然自由自我            永远高唱我歌      走遍千里   原谅我这一生不羁放纵爱自由            也会怕有一天会跌倒      背弃了理想   谁人都可以            哪会怕有一天只你共我            原谅我这一生不羁放纵爱自由      也会怕有一天会跌倒            背弃了理想谁人都可以            哪会怕有一天只你共我","ret_code": 0}
}
       (3) 根据人名,歌名查询歌曲 :这个可以做搜索歌曲,也提供图片信息,在热门榜单接口中,不提供图片信息的,所以可以使用这个接口,拿到歌曲的图片信息包括歌手图片信息;
       单条数据信息展示 :
{"albumid": 62660,"albummid": "00449cf44ccf8n","albumname": "Words & Music Final Live With 家驹","albumpic_big": "http://i.gtimg.cn/music/photo/mid_album_300/8/n/00449cf44ccf8n.jpg","albumpic_small": "http://i.gtimg.cn/music/photo/mid_album_90/8/n/00449cf44ccf8n.jpg","downUrl": "http://tsmusic24.tc.qq.com/4833285.mp3","m4a": "http://ws.stream.qqmusic.qq.com/4833285.m4a?fromtag=46","media_mid": "001fhSpB0P7buZ","singerid": 2,"singername": "BEYOND","songid": 4833285,"songname": "海阔天空 (Edited Version)"


3.易源API SDK的使用
     
     必须使用易源SDK ,才可以进行数据请求,这样可以省很多事,SDK中封装了,请求所必须的系统级参数,所以使用官方提供的SDK,很简单就可以实现调用,方便开发,如果你能力可以,自己可以写一个类,来提供系统级参数。
    官方提供了多个开发语言的版本SDK, 下载对应版本即可,我们使用的是Android ,所以下载Android 的(非Java)版本。
                  
    最后,还提供了请求源码,自己可以进行简单封装(不封装也可以)使用。
   Android 的 请求源码 :
      参数 : (1) appid 需要申请;
                (2) secret 创建后就生成了;
                (3) typeid  分类 信息
//以下代码仅为演示用,具体传入参数请参看接口描述详情页.
//需要引用android-async-http库(sdk中已经包括此jar包) ,其项目地址为: http://loopj.com/android-async-http/
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);final TextView txt = (TextView) this.findViewById(R.id.textView1);Button myBtn = (Button) this.findViewById(R.id.button1);final AsyncHttpResponseHandler resHandler=new AsyncHttpResponseHandler(){public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable e) {//做一些异常处理e.printStackTrace();}public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {try {System.out.println("response is :"+new String(responseBody,"utf-8"));txt.setText(new String(responseBody,"utf-8")+new Date());//在此对返回内容做处理} catch (UnsupportedEncodingException e) {e.printStackTrace();}}};myBtn.setOnClickListener(new OnClickListener() {public void onClick(View v) {new ShowApiRequest( "http://route.showapi.com/213-4", "appid", "secret").setResponseHandler(resHandler).addTextPara("topid", "").post();}});
}
4.总结 
  一个音乐播放器,不仅可以练习四大组件,而且还练习整个app的结构,包括网络请求等。其中最重要的是Service ,广播 ,通知 之间的通信将在后面详细列出。功能很简单 ,实现音乐列表,播放控制(上一曲,下一曲,播放,暂停),歌词滚动显示,进度条显示,倒计时实现。

Android实战 - 音心音乐播放器 (开启篇)相关推荐

  1. Android实战 - 音心音乐播发器 (主界面实现)

    开发平台 : eclipse , ubuntu ,android  sdk 4.0+ 1.背景 主页的设计从上往下依次是滚动广告(ViewFlipper ),分类信息( GridView ),热门榜单 ...

  2. Android实战 - 音心播放器 (通知实现音乐的播放/暂停/下一曲控制)

    1.背景 通知 -> Service : 上一篇的MusicService 中提高了通知是Service的前台显示,这篇将介绍通知(MusicNotification).通知在这里有四个作用: ...

  3. [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构

    这是一篇系列博文.请关注我,学习更多.NET MAUI开发知识! [MAUI 项目实战] 手势控制音乐播放器(一): 概述与架构 [MAUI 项目实战] 手势控制音乐播放器(二): 手势交互 [MAU ...

  4. Android应用开发--MP3音乐播放器滚动歌词实现

    Android应用开发--MP3音乐播放器滚动歌词实现 2013年6月2日  简.美音乐播放器开发记录 -----前话 有网友给我博客评论说,让我借鉴好的Android代码,代码贴出来的时候最好整体先 ...

  5. 基于Android的MediaPlayer的音乐播放器的封装

    基于Android的MediaPlayer的音乐播放器的封装 使用过android原生的mediaplayer来做音频播放的同学们,肯定是经历过一些痛苦的,因为android提供了一个状态机,确实这个 ...

  6. 【Java项目实战】在线音乐播放器(从需求到产品完整解析)

    准备工作必看:[Java项目实战]在线音乐播放器(前期准备) 核心功能 登录.注册 上传音乐 删除某一个音乐信息 删除选中的音乐信息 查询音乐(包含查找指定/模糊匹配的音乐) 添加音乐到"喜 ...

  7. android 存放音频文件夹里,Android 实现简单的音乐播放器效果(音频文件的三种存放)...

    Android 实现简单的音乐播放器效果(音频文件的三种存放).三种方法主要使用到的类 MediaPlayer.create() getAssets() new Mediaplayer() - 几个控 ...

  8. Android应用开发--MP3音乐播放器Service实现

    Android应用开发--MP3音乐播放器Service实现 2013年5月29日简.美音乐播放器开发记录 让网友们久等啦,关于简.美音乐播放器的开发,最重要的Service类总算是要发博了.关于An ...

  9. Android Studio如何实现音乐播放器

    Android Studio如何实现音乐播放器 今天跟着大佬的步骤实现了一个和老师讲的不一样的简易音乐播放器,超级赞!再完善和改一下主题适合用作自己的音乐播放器. 原贴: Android Studio ...

  10. Android应用开发 MP3音乐播放器滚动歌词实现

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! Andr ...

最新文章

  1. VM虚拟机中的centos6.3命令行模式添加GCC
  2. composer 修改为 国内镜像
  3. OpenGL EnvironmentMapping环境映射的实例
  4. [CareerCup] 1.6 Rotate Image 翻转图像
  5. react(94)--时间搜索传值规范
  6. 知乎万赞:哪一刻你发现年轻人正在悄悄改变社会?
  7. FineReport 11.0 五大全新功能,让报表开发更快、更好看
  8. mysql got signal 11_求助 mysqld got signal 11 解决办法
  9. 第19章 可空值类型
  10. mysql重装_连我mysql读你文件
  11. 【机器学习】集成算法使用样例
  12. android中的适配器模式
  13. Java比较器-学习
  14. ubuntu与windows双系统的启动项丢失
  15. 天津联通光猫创维DT541-csf改桥接
  16. 事件委托、动画、插件
  17. openstack 本地导入镜像.
  18. mac彻底卸载idea
  19. Linux命令-按照与使用(15)终端登陆前欢迎界面设置
  20. 元认知能力-认知的理解

热门文章

  1. 软回车和硬回车 MS高级office
  2. UE/蓝图 VR高级框架(AdvancedFrameworkVR4.1) 使用前的简单设置
  3. Android项目:基于安卓Android平台手机商城系统app(计算机毕业设计)
  4. ubuntu下安装运行电路仿真软件ngspice,打通KiCAD上手指南
  5. EDCSA OPENSSL签名验签方法
  6. 随机生成游戏建筑物的算法
  7. JavaWeb项目上云教程(Java项目在腾讯云上部署操作教程)
  8. 数据挖掘--风电机组异常数据识别与清洗
  9. html特效字体在线生成,javascript实现鼠标点击生成文字特效
  10. python拟合线性函数_Python线性拟合实现函数与用法示例