Android在线音乐播放器设计与实现Word格式.docx
《Android在线音乐播放器设计与实现Word格式.docx》由会员分享,可在线阅读,更多相关《Android在线音乐播放器设计与实现Word格式.docx(64页珍藏版)》请在冰豆网上搜索。
![Android在线音乐播放器设计与实现Word格式.docx](https://file1.bdocx.com/fileroot1/2023-2/4/bbe1ee6a-1eb2-4012-b2e2-1920b87b9a65/bbe1ee6a-1eb2-4012-b2e2-1920b87b9a651.gif)
手机的越来越智能化相当大的程度都要通过软件和应用来体现,2011年盛放的移动互联网应用市场带来了各门类的诸多精品应用,音乐播放器市场更是如此,除了传统单一的本地播放功能,Android平台的音乐播放器已经衍生出支持多格式、歌曲信息多合一提供、资源不仅依靠本地而且靠移动互联网提供、辅助功能完善的多种或集百家精粹,或有一技之长的精品播放器。
(1)音乐
音乐是腾讯公司推出的网络音乐平台,是中国互联网领域领先的正版数字音乐服务的领先平台,始终走在音乐潮流最前端,向广大用户提供方便流畅的在线音乐和丰富多彩的音乐社区服务。
音乐的缺点是如果要享受全部功能需要付费开通VIP。
(2)酷狗音乐
酷狗是中国领先的数字音乐交互服务提供商,互联网技术创新的领军企业,致力于为互联网用户和数字音乐产业发展提供最佳的解决方案。
酷狗具有良好的音乐效果,丰富的网络音乐资源,简单的操作成为酷狗音乐吸引用户的特色。
酷狗音乐的缺点是广告较多,且不能关闭。
(3)天天动听
天天动听(TTPOD)是水渡石信息技术开发音乐播放器,是一款功能强大、完全免费的音乐播放软件。
支持歌词和歌曲图片下载,皮肤随心更换,更有炫丽震撼的可视化效果,同时预置丰富的均衡器效果,支持音效增强,简洁人性化的操作,给追求音乐品质的你带来了手机听歌的全新体验。
天天动听的缺点是在低存手机上有明显的卡顿。
1.3目标与围
基于以上前提,决定设计并开发一款轻量级的、界面美观的、操作简单的、免费的在线音乐播放器——波尼音乐。
本软件是一款Android在线音乐播放器,支持播放本地歌曲与网络歌曲。
系统主要实现的功能是播放本地/网络歌曲,控制音乐的播放、暂停,支持歌词与专辑封面显示,自动从云端匹配并下载歌词,拥有多元化的歌曲排行榜,可以根据歌曲或歌手搜索相关歌曲,喜欢的歌曲可以一键下载到本地,支持睡眠模式、夜间模式等实用功能。
复古的黑胶唱片设计,使用户仿佛置身于二十世纪的音乐会现场,给用户带来充满空灵感和现场感的体验。
软件体积小,运行流畅,界面干净无广告,无多余权限,致力于提升用户的听歌体验。
实施本项目需要的硬件资源如下:
(1)x86架构电脑一台(CPUInteli5、存8GB、存储空间500GB)
(2)Android智能手机一台
实施本项目需要的软件资源如下:
(1)JDK1.8
(2)AndroidSDK23
(3)Gradle2.0
(4)AndroidStudio2.0[2]
1.4核心技术
本项目用到的开源技术有:
(s:
//github./square/ok)
是现在主流应用使用的网络请求方式,用来交换数据和容,有效的使用可以使APP变的更快和减少流量的使用。
Ok是一个很棒客户端:
(1)支持SPDY,可以合并多个到同一个主机的请求
(2)使用连接池技术减少请求的延迟(如果SPDY是可用的话)
(3)使用GZIP压缩减少传输的数据量
(4)缓存响应避免重复的网络请求
系统主要利用Ok进行网络请求,与服务器交换数据。
Gson
//github./google/gson)
Gson是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库。
可以将一个JSON字符串转成一个Java对象,或者反过来。
功能:
(1)使用toJson()和fromJson()方法,就可以非常容易的完成Java对象到JSON的相互转换。
(2)能将预先存在的无法修改的对象与JSON互相转换。
(3)支持Java泛型的使用。
(4)允许对象的个性化表达形式(representation)。
(5)支持各种复杂(拥有深继承层次结构和大量使用泛型类型)的对象。
系统主要利用Gson配合Ok将软件从服务器获取的原始数据进行快速解析。
Android-Universal-Image-Loader
//github./nostra13/Android-Universal-Image-Loader)
Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。
特点:
(1)多线程的图像加载;
(2)图片异步加载缓存机制,包括存缓存(软引用)与本地缓存;
(3)动态对ImageLoader的配置(线程池的大小,选项,存和光盘高速缓存方式,显示图像,以与其他选项);
(4)对加载过程实现监听和事件处理;
(5)能够配置加载图片的显示选项,包括图片圆角处理和加载完成显示动画等。
系统主要利用Android-Universal-Image-Loader将歌手、专辑等图片进行高效的缓存,以提高应用性能,并解决用户流量。
第2章Android音乐播放器需求分析
2.1功能性需求分析
根据项目要达到的目标,需要制定系统的基本需求,接下来将根据不同模块描述系统需求,并配合用例图来描述系统的功能性需求。
分为以下五个模块来描述:
本地音乐需求,在线音乐需求,正在播放(播放控制)需求,在线搜索需求,扩展功能需求。
2.1.1本地音乐
本地音乐列表的需求
图2-1本地音乐用例图
(1)播放
参与者:
使用者
目标:
使使用者可以播放所点击歌曲
前置条件:
应用已启动,且在“我的音乐”页面
基本事件流:
a.使用者点击需要播放的歌曲item
b.播放器将播放使用者所点击的歌曲
(2)分享
使使用者可以将所选歌曲分享给好友
应用已启动,且在“我的音乐”页面,点击“更多”按钮
a.使用者点击需要分享歌曲item的“更多”按钮,并点击“分享”
b.系统将提示使用者选择分享方式
(3)设为铃声
使使用者可以将所选歌曲设置为手机铃声
a.使用者点击需要设为铃声歌曲item的“更多”按钮,并点击“设为铃声”
b.播放器将所选歌曲设置为手机铃声
(4)删除
使使用者可以将所选歌曲删除
a.使用者点击需要删除歌曲item的“更多”按钮,并点击“删除”
b.播放器将所选歌曲删除并从播放列表中移除
2.1.2在线音乐
当用户点击“在线音乐”中的歌曲排行榜时的需求
图2-2在线歌单用例图
(1)查看歌曲排行榜
使使用者可以查看所选的歌曲排行榜
应用已启动,且在“在线音乐”页面
a.使用者点击需要查看的歌曲排行榜item
b.播放器将打开所选的歌曲排行榜
c.歌曲排行榜显示排行榜说明、更新时间、歌曲列表
当用户点击进入歌曲排行榜后,点击歌曲item的“更多”按钮的需求
图2-3在线音乐用例图
使使用者可以播放所点击的网络歌曲
应用已启动,且在“歌曲排行榜”页面
a.使用者点击需要播放的网络歌曲item
b.播放器将播放使用者所点击的网络歌曲
使使用者可以将所选网络歌曲的试听分享给好友
应用已启动,且在“歌曲排行榜”页面,点击“更多”按钮
a.使用者点击需要分享网络歌曲item的“更多”按钮,并点击“分享”
(3)查看歌手信息
使使用者可以查看所选歌曲的歌手的详细信息
a.使用者点击需要查看歌手信息的网络歌曲item的“更多”按钮,并点击“查看歌手信息”
b.播放器将跳转到“歌手信息”界面,显示歌手图片、身高、体重、简介等信息
(4)下载
使使用者可以将所选网络歌曲与其匹配的歌词下载到本地
a.使用者点击需要下载网络歌曲item的“更多”按钮,并点击“下载”
b.播放器将下载使用者所选网络歌曲与其匹配的歌词,并在下载完成后自动添加到“我的音乐”列表
2.1.3在线搜索
在线搜索时的需求
图2-4在线搜索用例图
(1)搜索
使使用者可以根据输入的歌曲名/歌手名搜索相关歌曲
应用已启动,且在“搜索”界面,系统已连接至互联网
a.使用者输入歌曲名/歌手名并点击搜索
b.播放器将搜索结果以列表的形式展示
(2)播放
同在线音乐“播放”需求
(3)分享
同在线音乐“分享”需求
2.1.4播放控制
播放控制的需求
图2-5播放控制用例图
(1)播放/暂停
使使用者可以播放/暂停当前歌曲
应用已启动,且在“正在播放”页面
a.使用者点击播放/暂停按钮
b.播放器将播放/暂停当前歌曲
(2)上一曲
使使用者可以切换到上一首歌曲
a.使用者点击上一曲按钮
b.播放器将切换到上一首歌曲
(3)下一曲
使使用者可以切换到下一首歌曲
a.使用者点击下一曲按钮
b.播放器将切换到下一首歌曲
(4)播放模式
使使用者可以切换播放模式(全部循环/随机播放/单曲循环)
a.使用者点击切换播放模式按钮
b.播放器将切换播放模式
(5)显示专辑封面
使正在播放界面可以显示当前歌曲的专辑封面,并添加旋转动画
应用已启动,且在“正在播放”页面,且当前正在播放的歌曲包含专辑封面
播放器播放歌曲时自动显示其专辑封面,没有封面的歌曲显示默认封面
(6)显示歌词
使正在播放界面可以显示当前歌曲的歌词,并滚动显示
应用已启动,在“正在播放”页面,当前正在播放的歌曲包含歌词
播放器播放歌曲时自动显示其歌词,并根据歌曲播放进度自动滚动到相应位置,没有歌词的歌曲参见“自动搜索歌词”需求
(7)自动搜索歌词
如果当前播放的歌曲没有歌词,则从网络搜索并下载歌词
应用已启动,且在“正在播放”页面,且当前正在播放的歌曲不包含歌词,系统已连接至互联网
播放器播放歌曲时如果没有歌词,则自动从网络搜索并下载,下载完成后自动显示,同“显示歌词”需求
(8)播放进度调节
使使用者可以调节当前播放歌曲的进度
a.使用者拖拽播放进度条
b.播放器自动跳转到用户选择的位置
(9)音量调节
使使用者可以调节音量
a.使用者拖拽音量进度条
b.系统自动调节音量
2.1.5扩展功能
播放器附带的扩展功能需求
图2-6扩展功能用例图
(1)天气
使播放器可以自动定位并显示当前城市的实时天气信息
应用已启动,系统已连接至互联网
a.使用者启动应用
b.播放器将自动定位并显示当前城市的实时天气信息,包括天气、城市、风力、湿度等信息
(2)功能设置
使使用者可以自定义播放器的偏好设置
应用已启动,打开设置界面
a.使用者点击设置项
b.播放器自动保存所选设置项,包括是否允许移动网络播放在线歌曲、音效调节等
(3)夜间模式
使使用者可以切换夜间/日间模式
应用已启动
a.使用者点击夜间模式
b.播放器自动切换到夜间/日间模式,不影响当前播放的歌曲
(4)定时停止播放
使使用者可以定时停止播放歌曲并退出应用
a.使用者点击定时停止播放
b.播放器弹出对话框让使用者设定时间
c.到达使用者设置的事件后自动停止播放并退出应用
(5)关于说明
使使用者可以查看播放器的关于说明
a.使用者点击关于
b.播放器跳转到关于界面,包含应用版本、检查更新、推荐给朋友、作者信息等
(6)启动界面
使播放器定期更新启动界面图
b.播放器检查本地是否已经下载了启动界面图片,如果没有,则从网络后台下载;
如果已经下载,则直接展示启动画面图
2.2非功能性需求分析
2.2.1软件性能指标
存占用:
30~40MB
CPU占用:
5~10%
启动时间:
1~2s
流量消耗:
每次运行消耗1000KB以(下载流量除外)
FPS:
25~30
2.2.2软件兼容性
系统:
Android4.0或更高
RAM:
128MB或更高
ROM:
256MB或更高
CPU架构:
ARM、x86、MIPS
第3章Android音乐播放器系统概要设计
3.1主要设计容
系统设计了一个Android平台的在线音乐播放器,基于Native方式进行开发。
采用MVC框架,将项目的视图层、数据层和逻辑层分离组织,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。
MVC模式图如下:
图3-1MVC模式
系统基于Android开源平台,使用Java语言编写,视图层使用xml实现。
使用Service后台播放音乐,通过Binder绑定Service并设置回调的方式实现前台界面(Activity)到后台服务(Service)之间的交互。
系统和服务器采用json数据,通过Ok+Gson进行数据的传输和解析。
服务器为XX在线音乐服务,通过暴露的restAPI接口,使得客户端可以从服务器获得在线音乐数据。
3.2设计思想
系统由本地音乐文件与XX音乐服务器提供播放源,前台界面展示播放效果。
图3-2设计思想
前台界面包括Activity和Fragment,Activity通过bindService方法可以得到Service的实例,然后通过Service的方法设置Activity的回调,Activity收到回调事件后抄送给Fragment。
在线音乐部分通过Ok+Gson从XX音乐服务获取并解析数据,图片缓存通过Universal-Image-Loader的三级缓存实现。
3.3系统框架
系统主要分为后台服务,数据层,业务层,前台界面四个层次,后台服务主要提供播放逻辑控制,数据层包括本地数据和服务器数据,业务层是各个功能模块,前台界面展示当前播放歌曲的信息。
图3-3系统框架图
3.4系统功能
系统主要包括本地音乐,在线音乐等几大功能,功能如下图:
图3-4系统功能
3.4.1本地音乐
本地音乐功能包括播放,分享,设为铃声等功能,具体功能如下图:
图3-5本地音乐
3.4.2在线音乐
在线音乐功能包括播放,分享,查看歌手信息等功能,具体功能如下:
图3-6在线音乐
3.4.3在线搜索
在线搜索功能包括搜索,播放,分享,下载功能,具体功能如下:
图3-7在线搜索
3.4.4播放控制
播放控制功能主要包括上一曲/下一曲,播放进度调节,播放模式切换等,具体功能如下图:
图3-8播放控制
3.4.5扩展功能
扩展功能包括夜间模式,定时关闭,自动更新等功能,具体功能如下图:
图3-9扩展功能
3.5流程设计
系统主界面显示本地音乐列表,在线歌单列表,快速播放控制以与侧边菜单栏,点击本地音乐可以播放,点击歌单可以进入歌单详情,点击快速播放控制条可以进入正在播放界面,侧边菜单栏包括一些附加功能,系统总体流程图如下:
图3-10流程设计图
第4章Android音乐播放器存储设计
4.1本地存储
该系统支持用户自定义偏好设置,因此需要设计本地存储。
Android目前有以下三种存储方式。
(1)使用SharedPreferences存储数据
适用围:
保存少量的数据,且这些数据的格式非常简单:
字符串型、基本类型的值。
比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等。
核心原理:
保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。
通过DDMS的FileExplorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/<
packagename>
/shared_prefs目录下。
SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的部接口Editor对象实现。