Android在线音乐播放器设计与实现.doc

上传人:知****量 文档编号:18906480 上传时间:2022-06-03 格式:DOC 页数:53 大小:940.54KB
返回 下载 相关 举报
Android在线音乐播放器设计与实现.doc_第1页
第1页 / 共53页
Android在线音乐播放器设计与实现.doc_第2页
第2页 / 共53页
点击查看更多>>
资源描述

《Android在线音乐播放器设计与实现.doc》由会员分享,可在线阅读,更多相关《Android在线音乐播放器设计与实现.doc(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、. . . . Android在线音乐播放器设计与实现摘要:移动互联网发展瞬息万变,以往的随身听、MP3等千篇一律的播放设备已经越来越难以满足人们多样化的听音乐需求了,而市面上的音乐播放器APP却深陷商业的漩涡,盈利和用户体验总是难以成正比,看似琳琅满目的音乐应用却没有几款真正让用户喜欢的。在这样的背景下,课题基于Android开源平台,使用Java语言开发,采用Android Studio + Gradle工具构建,并依靠Ok +Gson提供网络框架,开发了一款Android在线音乐播放器。播放器支持播放在线音乐,上一曲、下一曲,切换播放模式,支持歌词与专辑封面显示,支持搜索、下载在线歌曲等

2、基本功能,并扩展实现了夜间模式,定时关闭等功能,致力于给用户提供更舒心的听歌体验。论文给出详细的框架设计,系统流程设计,部分设计图与主要功能运行流程图,并对开发中遇到的主要问题进行了详细讨论,如通过Activity和Service通信实现后台播放。经过系统测试,系统实现了基本功能和扩展功能,性能达到了一定的指标。关键词:在线音乐;播放器;定时关闭;Gradle;Ok Design and Implementation of Android-based Online Music PlayerAbstract: The development of mobile Internet is const

3、antly changing, the previous Walkman, MP3 player and other devices have been stereotyped increasingly difficult to meet peoples demand for a variety of music, and the music player market, APP has deep whirlpool business, earnings and proportional to the user experience is always difficult, seemingly

4、 dazzling music application did not allow several users to really like it. In this context, an object based on the Android open source platform developed using the Java language, using Android Studio + Gradle build tool, and rely Ok + Gson provide network framework, developed an Android online music

5、 player. Player supports playback of online music, the song, the next song, switch the playback mode, support for lyrics and album art display, supports searching, downloading songs online and other basic functions, and expanded to achieve a night mode, time off and other functions, is committed to

6、to provide a more enjoyable experience of listening to music. Paper gives a detailed framework design, system design process, part of the design and operation of the main function of a flow chart, and the development of the main problems encountered were discussed in detail, for example, by Activity

7、 and Service Communication between Play in background. After testing the system, the system to achieve the basic functions and extensions, reach a certain performance targets.Keywords: online music, player, time off, gradle, ok 目录第1章 绪论11.1 背景11.2 国外现状11.3 目标与围21.4 核心技术3第2章 Android音乐播放器需求分析52.1 功能性需

8、求分析52.1.1 本地音乐52.1.2 在线音乐62.1.3 在线搜索82.1.4 播放控制92.1.5 扩展功能122.2 非功能性需求分析142.2.1 软件性能指标142.2.2 软件兼容性14第3章 Android音乐播放器系统概要设计153.1 主要设计容153.2 设计思想153.3 系统框架163.4 系统功能173.4.1 本地音乐173.4.2 在线音乐183.4.3 在线搜索183.4.4 播放控制193.4.5 扩展功能193.5 流程设计19第4章 Android音乐播放器存储设计214.1 本地存储214.2 远程存储22第5章 Android音乐播放器详细设计与实

9、现235.1 系统架构详细设计235.1.1 系统架构方式分析235.1.2 系统框架分析245.1.3 网络请求框架分析275.1.4 数据缓存框架285.2 功能详细设计305.2.1 本地音乐详细设计305.2.2 在线音乐详细设计325.2.3 在线搜索详细设计345.2.4 播放控制详细设计355.2.5 扩展功能详细设计375.2.6 功能设置详细设计395.2.7 关于界面详细设计41第6章 Android音乐播放器系统测试436.1 功能测试436.1.1 测试环境436.1.2 测试用例436.1.3 测试结论446.2 兼容性测试45结论47致48参考文献4948 / 53

10、第1章 绪论1.1 背景Android是一种基于Linux的自由与开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导与开发。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的操作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。如今,Android平台手机的全球市场份额已达到84.7%。本设计的音乐播放器采用了Android开源系统技术,利用Java语言和Android S

11、tudio工具对播放器进行开发。如今社会生活节奏日益加快,人们的压力也越来越大,倾听音乐则是最有效的减轻压力的方法之一。随着智能手机的普与,手机音质的提升,大多数人都有了在手机上听歌的习惯,纵观市面上的商业化音乐播放APP,大多臃肿不堪,功能繁琐,而大多数功能都是用户用不到的,大量消耗手机存和CPU,操作复杂,同质化严重,广告繁多,界面设计没有吸引力,容易产生审美疲劳,无法使人全身心的放松,有时遇到喜欢的音乐想要下载还要付费,大大降低了听歌体验。1.2 国外现状手机的越来越智能化相当大的程度都要通过软件和应用来体现,2011年盛放的移动互联网应用市场带来了各门类的诸多精品应用,音乐播放器市场更

12、是如此,除了传统单一的本地播放功能,Android平台的音乐播放器已经衍生出支持多格式、歌曲信息多合一提供、资源不仅依靠本地而且靠移动互联网提供、辅助功能完善的多种或集百家精粹,或有一技之长的精品播放器。(1) 音乐 音乐是腾讯公司推出的网络音乐平台,是中国互联网领域领先的正版数字音乐服务的领先平台,始终走在音乐潮流最前端,向广大用户提供方便流畅的在线音乐和丰富多彩的音乐社区服务。 音乐的缺点是如果要享受全部功能需要付费开通VIP。(2) 酷狗音乐酷狗是中国领先的数字音乐交互服务提供商,互联网技术创新的领军企业,致力于为互联网用户和数字音乐产业发展提供最佳的解决方案。酷狗具有良好的音乐效果,丰

13、富的网络音乐资源,简单的操作成为酷狗音乐吸引用户的特色。酷狗音乐的缺点是广告较多,且不能关闭。(3) 天天动听天天动听(TTPOD)是水渡石信息技术开发音乐播放器,是一款功能强大、完全免费的音乐播放软件。支持歌词和歌曲图片下载,皮肤随心更换,更有炫丽震撼的可视化效果,同时预置丰富的均衡器效果,支持音效增强,简洁人性化的操作,给追求音乐品质的你带来了手机听歌的全新体验。天天动听的缺点是在低存手机上有明显的卡顿。1.3 目标与围基于以上前提,决定设计并开发一款轻量级的、界面美观的、操作简单的、免费的在线音乐播放器波尼音乐。本软件是一款Android在线音乐播放器,支持播放本地歌曲与网络歌曲。系统主

14、要实现的功能是播放本地/网络歌曲,控制音乐的播放、暂停,支持歌词与专辑封面显示,自动从云端匹配并下载歌词,拥有多元化的歌曲排行榜,可以根据歌曲或歌手搜索相关歌曲,喜欢的歌曲可以一键下载到本地,支持睡眠模式、夜间模式等实用功能。复古的黑胶唱片设计,使用户仿佛置身于二十世纪的音乐会现场,给用户带来充满空灵感和现场感的体验。软件体积小,运行流畅,界面干净无广告,无多余权限,致力于提升用户的听歌体验。实施本项目需要的硬件资源如下:(1) x86架构电脑一台(CPU Intel i5、存8GB、存储空间500GB)(2) Android智能手机一台实施本项目需要的软件资源如下:(1) JDK 1.8(2

15、) Android SDK 23(3) Gradle 2.0(4) Android Studio 2.02 1.4 核心技术本项目用到的开源技术有:Ok ( s:/github./square/ok ) 是现在主流应用使用的网络请求方式,用来交换数据和容,有效的使用 可以使APP变的更快和减少流量的使用。Ok 是一个很棒 客户端:(1) 支持SPDY,可以合并多个到同一个主机的请求(2) 使用连接池技术减少请求的延迟(如果SPDY是可用的话)(3) 使用GZIP压缩减少传输的数据量(4) 缓存响应避免重复的网络请求系统主要利用Ok 进行网络请求,与服务器交换数据。Gson( s:/github

16、./google/gson)Gson 是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。功能:(1) 使用toJson()和fromJson()方法,就可以非常容易的完成Java对象到JSON的相互转换。(2) 能将预先存在的无法修改的对象与JSON互相转换。(3) 支持Java泛型的使用。(4) 允许对象的个性化表达形式(representation)。(5) 支持各种复杂(拥有深继承层次结构和大量使用泛型类型)的对象。系统主要利用Gson配合Ok 将软件从服务器获取的原始数据进行

17、快速解析。Android-Universal-Image-Loader( s:/github./nostra13/Android-Universal-Image-Loader)Android-Universal-Image-Loader是一个开源的UI组件程序,该项目的目的是提供一个可重复使用的仪器为异步图像加载,缓存和显示。特点:(1) 多线程的图像加载;(2) 图片异步加载缓存机制,包括存缓存(软引用)与本地缓存;(3) 动态对ImageLoader的配置(线程池的大小, 选项,存和光盘高速缓存方式,显示图像,以与其他选项);(4) 对加载过程实现监听和事件处理;(5) 能够配置加载图片的

18、显示选项,包括图片圆角处理和加载完成显示动画等。系统主要利用Android-Universal-Image-Loader将歌手、专辑等图片进行高效的缓存,以提高应用性能,并解决用户流量。第2章 Android音乐播放器需求分析2.1 功能性需求分析根据项目要达到的目标,需要制定系统的基本需求,接下来将根据不同模块描述系统需求,并配合用例图来描述系统的功能性需求。分为以下五个模块来描述:本地音乐需求,在线音乐需求,正在播放(播放控制)需求,在线搜索需求,扩展功能需求。2.1.1 本地音乐本地音乐列表的需求图2-1 本地音乐用例图(1) 播放参与者:使用者目标:使使用者可以播放所点击歌曲前置条件:

19、应用已启动,且在“我的音乐”页面基本事件流:a.使用者点击需要播放的歌曲itemb.播放器将播放使用者所点击的歌曲(2) 分享参与者:使用者目标:使使用者可以将所选歌曲分享给好友前置条件:应用已启动,且在“我的音乐”页面,点击“更多”按钮基本事件流:a.使用者点击需要分享歌曲item的“更多”按钮,并点击“分享”b.系统将提示使用者选择分享方式(3) 设为铃声参与者:使用者目标:使使用者可以将所选歌曲设置为手机铃声前置条件:应用已启动,且在“我的音乐”页面,点击“更多”按钮基本事件流:a.使用者点击需要设为铃声歌曲item的“更多”按钮,并点击“设为铃声”b.播放器将所选歌曲设置为手机铃声(4

20、) 删除参与者:使用者目标:使使用者可以将所选歌曲删除前置条件:应用已启动,且在“我的音乐”页面,点击“更多”按钮基本事件流:a.使用者点击需要删除歌曲item的“更多”按钮,并点击“删除”b.播放器将所选歌曲删除并从播放列表中移除2.1.2 在线音乐 当用户点击“在线音乐”中的歌曲排行榜时的需求图2-2 在线歌单用例图(1) 查看歌曲排行榜参与者:使用者目标:使使用者可以查看所选的歌曲排行榜前置条件:应用已启动,且在“在线音乐”页面基本事件流:a.使用者点击需要查看的歌曲排行榜itemb.播放器将打开所选的歌曲排行榜c.歌曲排行榜显示排行榜说明、更新时间、歌曲列表当用户点击进入歌曲排行榜后,

21、点击歌曲item的“更多”按钮的需求图2-3 在线音乐用例图(1) 播放参与者:使用者目标:使使用者可以播放所点击的网络歌曲前置条件:应用已启动,且在“歌曲排行榜”页面基本事件流:a.使用者点击需要播放的网络歌曲itemb.播放器将播放使用者所点击的网络歌曲(2) 分享参与者:使用者目标:使使用者可以将所选网络歌曲的试听分享给好友前置条件:应用已启动,且在“歌曲排行榜”页面,点击“更多”按钮基本事件流:a.使用者点击需要分享网络歌曲item的“更多”按钮,并点击“分享”b.系统将提示使用者选择分享方式(3) 查看歌手信息参与者:使用者目标:使使用者可以查看所选歌曲的歌手的详细信息前置条件:应用

22、已启动,且在“歌曲排行榜”页面,点击“更多”按钮基本事件流:a.使用者点击需要查看歌手信息的网络歌曲item的“更多”按钮,并点击“查看歌手信息”b.播放器将跳转到“歌手信息”界面,显示歌手图片、身高、体重、简介等信息(4) 下载参与者:使用者目标:使使用者可以将所选网络歌曲与其匹配的歌词下载到本地前置条件:应用已启动,且在“歌曲排行榜”页面,点击“更多”按钮基本事件流:a.使用者点击需要下载网络歌曲item的“更多”按钮,并点击“下载”b.播放器将下载使用者所选网络歌曲与其匹配的歌词,并在下载完成后自动添加到“我的音乐”列表2.1.3 在线搜索在线搜索时的需求图2-4 在线搜索用例图(1)

23、搜索参与者:使用者目标:使使用者可以根据输入的歌曲名/歌手名搜索相关歌曲前置条件:应用已启动,且在“搜索”界面,系统已连接至互联网基本事件流:a.使用者输入歌曲名/歌手名并点击搜索b.播放器将搜索结果以列表的形式展示(2) 播放同在线音乐“播放”需求(3) 分享同在线音乐“分享”需求(4) 下载同在线音乐“分享”需求2.1.4 播放控制播放控制的需求图2-5 播放控制用例图(1) 播放/暂停参与者:使用者目标:使使用者可以播放/暂停当前歌曲前置条件:应用已启动,且在“正在播放”页面基本事件流:a.使用者点击播放/暂停按钮b.播放器将播放/暂停当前歌曲(2) 上一曲参与者:使用者目标:使使用者可

24、以切换到上一首歌曲前置条件:应用已启动,且在“正在播放”页面基本事件流:a.使用者点击上一曲按钮b.播放器将切换到上一首歌曲(3) 下一曲参与者:使用者目标:使使用者可以切换到下一首歌曲前置条件:应用已启动,且在“正在播放”页面基本事件流:a.使用者点击下一曲按钮b.播放器将切换到下一首歌曲(4) 播放模式参与者:使用者目标:使使用者可以切换播放模式(全部循环/随机播放/单曲循环)前置条件:应用已启动,且在“正在播放”页面基本事件流:a.使用者点击切换播放模式按钮b.播放器将切换播放模式(5) 显示专辑封面参与者:使用者目标:使正在播放界面可以显示当前歌曲的专辑封面,并添加旋转动画前置条件:应

25、用已启动,且在“正在播放”页面,且当前正在播放的歌曲包含专辑封面基本事件流:播放器播放歌曲时自动显示其专辑封面,没有封面的歌曲显示默认封面(6) 显示歌词参与者:使用者目标:使正在播放界面可以显示当前歌曲的歌词,并滚动显示前置条件:应用已启动,在“正在播放”页面,当前正在播放的歌曲包含歌词基本事件流:播放器播放歌曲时自动显示其歌词,并根据歌曲播放进度自动滚动到相应位置,没有歌词的歌曲参见“自动搜索歌词”需求(7) 自动搜索歌词参与者:使用者目标:如果当前播放的歌曲没有歌词,则从网络搜索并下载歌词前置条件:应用已启动,且在“正在播放”页面,且当前正在播放的歌曲不包含歌词,系统已连接至互联网基本事

26、件流:播放器播放歌曲时如果没有歌词,则自动从网络搜索并下载,下载完成后自动显示,同“显示歌词”需求(8) 播放进度调节参与者:使用者目标:使使用者可以调节当前播放歌曲的进度前置条件:应用已启动,且在“正在播放”页面基本事件流:a.使用者拖拽播放进度条b.播放器自动跳转到用户选择的位置(9) 音量调节参与者:使用者目标:使使用者可以调节音量前置条件:应用已启动,且在“正在播放”页面基本事件流:a.使用者拖拽音量进度条b.系统自动调节音量2.1.5 扩展功能播放器附带的扩展功能需求图2-6 扩展功能用例图(1) 天气参与者:使用者目标:使播放器可以自动定位并显示当前城市的实时天气信息前置条件:应用

27、已启动,系统已连接至互联网基本事件流:a.使用者启动应用b.播放器将自动定位并显示当前城市的实时天气信息,包括天气、城市、风力、湿度等信息(2) 功能设置参与者:使用者目标:使使用者可以自定义播放器的偏好设置前置条件:应用已启动,打开设置界面基本事件流:a.使用者点击设置项b.播放器自动保存所选设置项,包括是否允许移动网络播放在线歌曲、音效调节等(3) 夜间模式参与者:使用者目标:使使用者可以切换夜间/日间模式前置条件:应用已启动基本事件流:a.使用者点击夜间模式b.播放器自动切换到夜间/日间模式,不影响当前播放的歌曲(4) 定时停止播放参与者:使用者目标:使使用者可以定时停止播放歌曲并退出应

28、用前置条件:应用已启动基本事件流:a.使用者点击定时停止播放b.播放器弹出对话框让使用者设定时间c.到达使用者设置的事件后自动停止播放并退出应用(5) 关于说明参与者:使用者目标:使使用者可以查看播放器的关于说明前置条件:应用已启动基本事件流:a.使用者点击关于b.播放器跳转到关于界面,包含应用版本、检查更新、推荐给朋友、作者信息等(6) 启动界面参与者:使用者目标:使播放器定期更新启动界面图前置条件:应用已启动,系统已连接至互联网基本事件流:a.使用者启动应用b.播放器检查本地是否已经下载了启动界面图片,如果没有,则从网络后台下载;如果已经下载,则直接展示启动画面图2.2 非功能性需求分析2

29、.2.1 软件性能指标存占用:3040MBCPU占用:510%启动时间:12s流量消耗:每次运行消耗1000KB以(下载流量除外)FPS:25302.2.2 软件兼容性系统:Android 4.0或更高RAM:128MB或更高ROM:256MB或更高CPU架构:ARM、x86、MIPS第3章 Android音乐播放器系统概要设计3.1 主要设计容系统设计了一个Android平台的在线音乐播放器,基于Native方式进行开发。采用MVC框架,将项目的视图层、数据层和逻辑层分离组织,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面与用户交互的同时,不需要重新编写业务逻辑。MVC模式图如下:图3

30、-1 MVC模式系统基于Android开源平台,使用Java语言编写,视图层使用xml实现。使用Service后台播放音乐,通过Binder绑定Service并设置回调的方式实现前台界面(Activity)到后台服务(Service)之间的交互。系统和服务器采用json数据,通过Ok +Gson进行数据的传输和解析。服务器为百度在线音乐服务,通过暴露的rest API接口,使得客户端可以从服务器获得在线音乐数据。3.2 设计思想系统由本地音乐文件与百度音乐服务器提供播放源,前台界面展示播放效果。图3-2 设计思想前台界面包括Activity和Fragment,Activity通过bindSer

31、vice方法可以得到Service的实例,然后通过Service的方法设置Activity的回调,Activity收到回调事件后抄送给Fragment。在线音乐部分通过Ok +Gson从百度音乐服务获取并解析数据,图片缓存通过Universal-Image-Loader的三级缓存实现。3.3 系统框架系统主要分为后台服务,数据层,业务层,前台界面四个层次,后台服务主要提供播放逻辑控制,数据层包括本地数据和服务器数据,业务层是各个功能模块,前台界面展示当前播放歌曲的信息。图3-3 系统框架图3.4 系统功能系统主要包括本地音乐,在线音乐等几大功能,功能如下图:图3-4 系统功能3.4.1 本地音

32、乐本地音乐功能包括播放,分享,设为铃声等功能,具体功能如下图:图3-5 本地音乐3.4.2 在线音乐在线音乐功能包括播放,分享,查看歌手信息等功能,具体功能如下:图3-6 在线音乐3.4.3 在线搜索在线搜索功能包括搜索,播放,分享,下载功能,具体功能如下:图3-7 在线搜索3.4.4 播放控制播放控制功能主要包括上一曲/下一曲,播放进度调节,播放模式切换等,具体功能如下图:图3-8 播放控制3.4.5 扩展功能扩展功能包括夜间模式,定时关闭,自动更新等功能,具体功能如下图:图3-9扩展功能3.5 流程设计系统主界面显示本地音乐列表,在线歌单列表,快速播放控制以与侧边菜单栏,点击本地音乐可以播

33、放,点击歌单可以进入歌单详情,点击快速播放控制条可以进入正在播放界面,侧边菜单栏包括一些附加功能,系统总体流程图如下:图3-10 流程设计图第4章 Android音乐播放器存储设计4.1 本地存储该系统支持用户自定义偏好设置,因此需要设计本地存储。Android目前有以下三种存储方式。(1) 使用SharedPreferences存储数据适用围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等。核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的

34、配置信息。通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data/shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的部接口Editor对象实现。 SharedPreferences本身是一 个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPr

35、eferences实例。(2) 文件存储数据核心原理: Context提供了两个方法来打开数据文件里的文件IO流 FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),这两个方法第一个参数 用于指定文件名,第二个参数指定打开文件的模式。(3) SQLite存储数据SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的存就有很好的性能。现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在为移动设备开发应用程序时,也许就

36、要使用到SQLite来存储大量的数据,所以就需要掌握移动设备上的SQLite开发技巧。(4) 结论根据上面的分析,只需要存储一些基本配置,因此只需要选择一种轻量级的存储方式即可,所以,选择使用SharedPreferences来存储数据。将需要保存的数据以key-value形式写入xml文件,文件大小小于1KB。保存的数据格式如下 / 是否允许移动网络下载/ 是否允许移动网络播放在线歌曲/ 是否开启夜间模式/ 启动页图片 s:/pic4.zhimg./715717d2436d1fed01f2b20453dc686b.jpg/ 播放模式/ 当前播放的歌曲id 4.2 远程存储该系统需要查看在线歌

37、曲排行榜、搜索在线歌曲,因此需要远程服务器存储数据,这里远程服务器不在本设计的畴之,因此这里不过多讨论。第5章 Android音乐播放器详细设计与实现本章将根据系统概要设计,对每个部分进行详细设计,给出代码实现,代码分析,并对期间遇到的问题进行详细讨论。5.1 系统架构详细设计5.1.1 系统架构方式分析(1) 现状Android系统App目前有三种主流的架构方式:a) Native原生方式b) Html5万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改。c) React NativeReact Native使你能够在Javascript和React的基

38、础上获得完全一致的开发体验,构建世界一流的原生APP。React Native着力于提高多平台开发的开发效率 仅需学习一次,编写任何平台。(Learn once, write anywhere)Facebook已经在多项产品中使用了React Native,并且将持续地投入建设React Native。(2) 分析三种架构方式的对比分析:a) 开发方式l 代码结构: React Native更为合理,组件化程度高l UI布局:Web布局灵活度 React Native Nativel UI截面图:React Native使用的是原生组件l 路由Navigation:React Native &

39、 Native更胜一筹l 第三方生态链:Native modules + js modules = React Native modulesb) 性能 & 体验l 存:Native最少;因为React Native含有框架,所以相对较高,但是后期平稳后会优于Native。l CPU:React Native居中。l 动画:React Native动画需求基本满足。l 安装包体积:React Native框架打包后,811KB。相比热更新,可以忽略和考虑资源规划。l Big ListViewl 真机体验:Native = React Native H5/Hybridc) 更新 & 维护l 更新能

40、力: H5/Hybird React Native Nativel 维护成本: H5/Hybird = React Native NativeReact Native定制难度相比Native有些大;但是具备跨平台能力和热更新能力。(3) 结论考虑到项目并不需要热更新,偏向于离线使用,播放界面专辑封面和歌词使用了大量动画,因此,综合考虑决定使用Native架构方式开发本项目。5.1.2 系统框架分析论文实现了一个个性化的音乐播放器。在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。众所周知,音乐播放需要支持应用退出后继续播放,因此不能在Acti

41、vity中直接播放音乐,因为这样的话界面退出后音乐就停止播放了。(1) 使用Service播放音乐Android SDK提供了Service,用于类似*nix守护进程或者windows的服务。Service有两种类型:本地服务(Local Service):用于应用程序部远程服务(Remote Sercie):用于Android系统部的应用程序之间前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。后者可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。这里不需要

42、其他程序共享Service,因此采用本地服务。(2) 前台界面(Activity)与后台服务(Service)通信Android中的四大组件是相互独立的,因此必须设计一个框架来实现前台界面(Activity)和后台服务(Service)的相互。Activity和Service的通信有以下几种方式:a) 回调接口的方式 。当Activity通过调用bindService(Intent service, ServiceConnection conn,int flags),可以得到一个Service的一个对象实例,然后就可以访问Service中的方法,完成ActivityService的通信;通过为

43、Service添加监听器的方法,Service作为被观察者,Activity作为观察者,当有新事件时,Service通知Activity,完成ServiceActivity的通信。这种方式适合Activity与Service交互比较频繁的情况。b) 通过广播接收者。在Service中执行完耗时操作后,将结果以广播的形式发送,在Activity中注册广播,接收到结果后更新UI。因为耗时的操作结果不需要以Handler的方式发送到主线程,可以直接在子线程中发送广播,接收者始终运行在主线程中。完成ServiceActivity的通信。同样,Activity将事件以广播的方式发送给Service,完成

44、ActivityService的通信。这种方式适合Activity与Service交互不太频繁的情况。c) 通过startService方式。Activity通过startService将事件发送到Service的onStartCommand()方法,然后Service执行相应的操作,完成ActivityService的通信;Service通过广播将事件发送到Activity,Activity中需注册广播接收器,完成ServiceActivity的通信。这种方式适合Activity与Service交互不太频繁的情况。经过以上分析,由于音乐播放前台界面(Activity)和后台服务(Servic

45、e)需要频繁的交互,因此应选择第一种通信方式。(3) 模块(Fragment)与后台服务(Service)通信应用在主窗口(Activity)中拥有三个模块(Fragment),“我的音乐”,“在线音乐”和“正在播放”模块,其中“我的音乐”和“正在播放”需要和后台服务频繁通信。有了前面的Activity和Service的通信方法,需要将Activity作为一个中介,通过Activity将Service的实例共享给Fragment,Activity将Service的回调抄送给Fragment,间接完成Fragment和Service的通信。详细代码实现:(1) Activity绑定Service,获得Service的实例,并绑定监听器

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作计划

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁