[毕业论文]Android在线音乐播放器设计与实现 下载本文

西南科技大学本科生毕业论文

第4章 Android音乐播放器存储设计

4.1 本地存储

该系统支持用户自定义偏好设置,因此需要设计本地存储。Android目前有以下三种存储方式。

(1) 使用SharedPreferences存储数据

适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口令密码等。

核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data//shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。 SharedPreferences本身是一 个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例。 (2) 文件存储数据

核心原理: Context提供了两个方法来打开数据文件里的文件IO流 FileInputStream openFileInput(String name); FileOutputStream(String name , int mode),这两个方法第一个参数 用于指定文件名,第二个参数指定打开文件的模式。

(3) SQLite存储数据

SQLite是轻量级嵌入式数据库引擎,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。现在的主流移动设备像Android、iPhone等都使用SQLite作为复杂数据的存储引擎,在为移动设备开发应用程序时,也许就要使用到SQLite来存储大量的数据,所以就需要掌握移动设备上的SQLite开发技巧。 (4) 结论

21

西南科技大学本科生毕业论文

根据上面的分析,只需要存储一些基本配置,因此只需要选择一种轻量级的存储方式即可,所以,选择使用SharedPreferences来存储数据。将需要保存的数据以key-value形式写入xml文件,文件大小小于1KB。 保存的数据格式如下

// 是否允许移动网络下载

name=\

// 播放模式

4.2 远程存储

该系统需要查看在线歌曲排行榜、搜索在线歌曲,因此需要远程服务器存储数据,这里远程服务器不在本设计的范畴之内,因此这里不过多讨论。

22

西南科技大学本科生毕业论文

第5章 Android音乐播放器详细设计与实现

本章将根据系统概要设计,对每个部分进行详细设计,给出代码实现,代码分析,并对期间遇到的问题进行详细讨论。

5.1 系统架构详细设计

5.1.1 系统架构方式分析 (1) 现状

Android系统App目前有三种主流的架构方式: a) Native

原生方式 b) Html5

万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改。 c) React Native

React Native使你能够在Javascript和React的基础上获得完全一致的开发体验,构建世界一流的原生APP。

React Native着力于提高多平台开发的开发效率 —— 仅需学习一次,编写任何平台。(Learn once, write anywhere)

Facebook已经在多项产品中使用了React Native,并且将持续地投入建设React Native。

(2) 分析

三种架构方式的对比分析: a) 开发方式

? 代码结构: React Native更为合理,组件化程度高 ? UI布局:Web布局灵活度 > React Native > Native ? UI截面图:React Native使用的是原生组件 ? 路由/Navigation:React Native & Native更胜一筹

23

西南科技大学本科生毕业论文

? 第三方生态链:Native modules + js modules = React Native modules b) 性能 & 体验

? 内存:Native最少;因为React Native含有框架,所以相对较高,但是

后期平稳后会优于Native。 ? CPU:React Native居中。

? 动画:React Native动画需求基本满足。

? 安装包体积:React Native框架打包后,811KB。相比热更新,可以忽

略和考虑资源规划。 ? Big ListView

? 真机体验:Native >= React Native > H5/Hybrid c) 更新 & 维护

? 更新能力: H5/Hybird > React Native > Native ? 维护成本: H5/Hybird <= React Native < Native

React Native定制难度相比Native有些大;但是具备跨平台能力和热更新能力。

(3) 结论

考虑到项目并不需要热更新,偏向于离线使用,播放界面专辑封面和歌词使用了大量动画,因此,综合考虑决定使用Native架构方式开发本项目。 5.1.2 系统框架分析

论文实现了一个个性化的音乐播放器。在Android中,Activity主要负责前台页面的展示,Service主要负责需要长期运行的任务。众所周知,音乐播放需要支持应用退出后继续播放,因此不能在Activity中直接播放音乐,因为这样的话界面退出后音乐就停止播放了。

(1) 使用Service播放音乐

Android SDK提供了Service,用于类似*nix守护进程或者windows的服务。 Service有两种类型:

本地服务(Local Service):用于应用程序内部

远程服务(Remote Sercie):用于Android系统内部的应用程序之间

前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应

24