西南科技大学本科生毕业论文
第1章 绪论
1.1 背景
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。如今,Android平台手机的全球市场份额已达到84.7%。本设计的音乐播放器采用了Android开源系统技术,利用Java语言和Android Studio工具对播放器进行开发。
如今社会生活节奏日益加快,人们的压力也越来越大,倾听音乐则是最有效的减轻压力的方法之一。随着智能手机的普及,手机音质的提升,大多数人都有了在手机上听歌的习惯,纵观市面上的商业化音乐播放APP,大多臃肿不堪,功能繁琐,而大多数功能都是用户用不到的,大量消耗手机内存和CPU,操作复杂,同质化严重,广告繁多,界面设计没有吸引力,容易产生审美疲劳,无法使人全身心的放松,有时遇到喜欢的音乐想要下载还要付费,大大降低了听歌体验。
1.2 国内外现状
手机的越来越智能化相当大的程度都要通过软件和应用来体现,2011年盛放的移动互联网应用市场带来了各门类的诸多精品应用,音乐播放器市场更是如此,除了传统单一的本地播放功能,Android平台的音乐播放器已经衍生出支持多格式、歌曲信息多合一提供、资源不仅依靠本地而且靠移动互联网提供、辅助功能完善的多种或集百家精粹,或有一技之长的精品播放器。
(1) QQ音乐
QQ音乐是腾讯公司推出的网络音乐平台,是中国互联网领域领先的正版数字音乐服务的领先平台,始终走在音乐潮流最前端,向广大用户提供方便流畅的在线音乐和丰富多彩的音乐社区服务。QQ音乐的缺点是如果要享受全部功能需要付费开通VIP。
1
西南科技大学本科生毕业论文
(2) 酷狗音乐
酷狗是中国领先的数字音乐交互服务提供商,互联网技术创新的领军企业,致力于为互联网用户和数字音乐产业发展提供最佳的解决方案。酷狗具有良好的音乐效果,丰富的网络音乐资源,简单的操作成为酷狗音乐吸引用户的特色。酷狗音乐的缺点是广告较多,且不能关闭。 (3) 天天动听
天天动听(TTPOD)是上海水渡石信息技术有限公司开发音乐播放器,是一款功能强大、完全免费的音乐播放软件。支持歌词和歌曲图片下载,皮肤随心更换,更有炫丽震撼的可视化效果,同时预置丰富的均衡器效果,支持音效增强,简洁人性化的操作,给追求音乐品质的你带来了手机听歌的全新体验。天天动听的缺点是在低内存手机上有明显的卡顿。
1.3 目标及范围
基于以上前提,决定设计并开发一款轻量级的、界面美观的、操作简单的、免费的在线音乐播放器——波尼音乐。
本软件是一款Android在线音乐播放器,支持播放本地歌曲与网络歌曲。系统主要实现的功能是播放本地/网络歌曲,控制音乐的播放、暂停,支持歌词与专辑封面显示,自动从云端匹配并下载歌词,拥有多元化的歌曲排行榜,可以根据歌曲或歌手搜索相关歌曲,喜欢的歌曲可以一键下载到本地,支持睡眠模式、夜间模式等实用功能。复古的黑胶唱片设计,使用户仿佛置身于二十世纪的音乐会现场,给用户带来充满空灵感和现场感的体验。软件体积小,运行流畅,界面干净无广告,无多余权限,致力于提升用户的听歌体验。
实施本项目需要的硬件资源如下:
(1) x86架构电脑一台(CPU Intel i5、内存8GB、存储空间500GB) (2) Android智能手机一台 实施本项目需要的软件资源如下: (1) JDK 1.8 (2) Android SDK 23 (3) Gradle 2.0
(4) Android Studio 2.0[2]
2
西南科技大学本科生毕业论文
1.4 核心技术
本项目用到的开源技术有: OkHttp
(https://github.com/square/okhttp)
HTTP是现在主流应用使用的网络请求方式,用来交换数据和内容,有效的使用HTTP可以使APP变的更快和减少流量的使用。
OkHttp是一个很棒HTTP客户端:
(1) 支持SPDY,可以合并多个到同一个主机的请求 (2) 使用连接池技术减少请求的延迟(如果SPDY是可用的话) (3) 使用GZIP压缩减少传输的数据量 (4) 缓存响应避免重复的网络请求
系统主要利用OkHttp进行网络请求,与服务器交换数据。 Gson
(https://github.com/google/gson)
Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
功能:
(1) 使用toJson()和fromJson()方法,就可以非常容易的完成Java对象到JSON的相互转换。
(2) 能将预先存在的无法修改的对象与JSON互相转换。 (3) 支持Java泛型的使用。
(4) 允许对象的个性化表达形式(representation)。
(5) 支持各种复杂(拥有深继承层次结构和大量使用泛型类型)的对象。 系统主要利用Gson配合OkHttp将软件从服务器获取的原始数据进行快速解析。 Android-Universal-Image-Loader
(https://github.com/nostra13/Android-Universal-Image-Loader)
Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。
特点:
3
西南科技大学本科生毕业论文
(1) 多线程的图像加载;
(2) 图片异步加载缓存机制,包括内存缓存(软引用)及本地缓存;
(3) 动态对ImageLoader的配置(线程池的大小,HTTP选项,内存和光盘高速缓存方式,显示图像,以及其他选项); (4) 对加载过程实现监听和事件处理;
(5) 能够配置加载图片的显示选项,包括图片圆角处理和加载完成显示动画等。 系统主要利用Android-Universal-Image-Loader将歌手、专辑等图片进行高效的缓存,以提高应用性能,并解决用户流量。
4