基于Android平台的音乐播放器设计与实现随着通信设备网络和计算机科学的快速发展,新一代的移动终端用户对移动设备的功能和性能有了更高的要求。Android是一个底层基于Linux、目前发展最快的智能手机操作系统。因此,在移动终端开发出基于Android平台的音乐播放器具有广阔的市场前景。 HM000043
本文设计的音乐播放器是基于Android1.6平台设计和实现的。首先,在对音乐播放器功能进行详细需求分析的基础上进行系统的总体设计,包括音乐播放器的架构设计、功能模块的划分、配置文件AndroidManifest.xml的设计;其次,对音乐播放器核心模块进行详细设计,包括文件管理模块、播放器主界面模块、菜单功能模块;然后,在Eclipse开发环境下采用Java语言进行程序设计;最后,对本文设计音乐播放器进行功能和性能方面的测试,运行情况良好。
本文基于Android平台音乐播放器的设计方法能为今后开发出功能更强大的移动设备多媒体播放软件提供有益的借鉴。
关键词:Android;音乐播放器;Eclipse;Java
Android操作系统是基于Linux平台的开源操作系统,该平台由操作系统、控制组件、用户界面和应用软件组成,是为云计算打造的移动终端设备平台。
2.1 Android系统架构
Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。详见图2.1:
图2.1 系统架构图
1. 应用程序 (Applications)
Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。但并非所有的应用程序都是使用JAVA语言编写的。一个应用,可以是Java语言编写的;也可以是Java编写一部分、C或C++编写一部分,再使用JNI调用。
2. 应用程序框架 (Application Framework)
开发人员可以完全访问核心应用程序所使用的API框架。该应用程序的架构
设计简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
隐藏在每个应用后面的是一系列的服务和系统,其中包括:
(1)丰富而又可扩展的视图(Views),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至可嵌入的web浏览器。
(2)内容提供器(ContentProviders)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据
(3)资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。
(4)通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
(5)活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。
Android应用程序框架提供了一套开发Andviroid应用的API,其中包括:
View System,一套用户图形界面开发组件,Button、对话框等;
Activity Manager,管理Activity的生命周期等;
Content Providers,管理数据共享;
Resource Manager,管理资源文件,如国际化、布局文件等;
Location Manager,管理定位服务;
Telephony Manager,管理电话服务。
3. 系统运行库 (Libraries)
(1)程序库
Android 包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。以下是它的一些核心库:
系统C库:一个从 BSD 继承来的标准C系统函数库(libc),它是专门为基于embedded linux的设备定制的。
媒体库:基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格
式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG 。
Surface Manager:对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。
LibWebCore:一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。
SGL:底层的2D图形引擎。
3D libraries:基于OpenGL ES 1.0 APIs实现,该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
FreeType:位图(bitmap)和矢量(vector)字体显示。
SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。
(2)Android运行库
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中的“dx”工具转化成.dex格式由虚拟机执行。
Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。
4. Android Runtime(Android运行时)
虽然Android应用程序是用Java编写的,但却不使用Java Runtime来执行程序,而是使用自行研发Android Runtime来执行程序。Runtime(运行时环境)主要由两部分组件组成的:Core Libraries(核心库)和VM(虚拟机)。JVM是Sun公司(现在是Oracle公司)开发的,由于版权问题,Google公司自己编写了VM,即Dalvik Virtual Machine(Dalvik VM)。编写Dalvik VM除了版权的问题,更重要的是Dalvik VM是为低耗能、低内存等手持移动设备而设计的,在一台设备上可以运行多个实例。对于很多底层处理Dalvik VM还要依赖Linux操作系统。
5. Linux 内核 (Linux Kernel)
Android系统是基于Linux操作系统之上的,采用Linux2.6内核,Android很多底层管理(如安全性、内存管理、进程管理、网络协议栈和驱动模型等管理)是依赖于Linux的。Linux内核也是硬件和软件之间的硬件抽象层,运行于Android中的Linux是经过裁剪的,适合于低能耗的移动设备。
2.2 Android平台开发关键技术
2.2.1 Android四大组件
Android的应用程序不是单一入口,而是可以从代码的不同位置启动,这就要依靠组件来实现。在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,Considerateness是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。详见图2.2:
图2.2 四大组件关联图
下面分别介绍四大组件:
1. Activity 简介
一个Activity实际上表现出来的就是一个程序的界面,这个界面可能有许多不同的形式,比如:列表形式、文字形式、图像格子等形式。一个应用程序也可能有不止一个Activity,多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。
每个Activity都有一个默认的窗口用于绘制界面,一般情况下,它是充满全屏的,但是我们可以通过程序控制它,使其小于屏幕大小,也可以控制其浮动于其他窗口之上。
Activity中显示出来的内容其实是由view堆叠形成的,view是由View基类派生出来的各种形式的界面元素,如ListView、GridView等,通过组合这些view,就形成了一个可见的Activity。
2. Service 简介
Service是一种没有界面的组件,同我们平常在Windows或Linux系统中所理解的“服务”一样,Android上的service也是运行在后台的,运行时间可以从系统启动到系统关闭为止。对于许多应用程序来说,service组件式至关重要的。以下载管理器为例,用户肯定希望能够在切换到其他程序时仍然在后台继续下载,这就需要用到service完成下载工作。而显示下载进度、已下载文件等信息则由Activity完成,同时我们还希望控制下载过程,如停止、继续等,这就需要Activity与service之间进行通信。一个定义好的Service必须在AndroidManifest.xml配置文件注册,通过元素声明才能使用。Service有自己的生命周期,我们可以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service。
3. Broadcast Receiver 简介
Broadcast意为广播消息,Android系统自身会发出许多广播消息,如电量不足、用户修改了全局设置等,各个应用程序也以向整个系统广播消息,如文件下载。Broadcast Receiver是程序中专门用来接收广播消息的组件,它没有界面显示,只负责监听、接收广播消息,然后根据程序逻辑,启动其他组件去处理广播消息。它可以启动一个Activity来同用户交互,也可以使用NotificationManager向用户发出通知。NitificationManager的通知形式有许多种,如振动、响铃、闪LED灯,还可以在Android界面的消息栏处显示信息。
4. Content Provider简介
Content Provider是一种为其它应用程序提供数据的组件。这些数据可以保存在文件中,也可以保存在SQLite数据库中,还可以以其他任何有效的方式保存。ContentProvider类为我们提供了一系列保存数据的方法供我们调用,可以很方便地存储数据。其它应用程序在需要使用这些数据时,可以用ContentResolver对象,使用其中的方法。ContentResolver可以与任何ContentProvider交互,获取其中的数据。
只需要某个组件,Android就会尽力保证它的可用;如果该组件还没有启动,就启动它,如果该组件所属的应用程序还没拥有一个进程,则为它启动一个进程,如果系统资源不足以容纳一个新的进程,则将后台的某个进程杀死为新进程腾出资源。
摘 要 I
ABSTRACT II
第1章 绪论 1
1.1 课题的目的及研究意义 1
1.2 课题的历史研究和发展现状 1
1.3 课题任务 3
第2章 Android开发概述 4
2.1 Android系统架构 4
2.2 Android平台开发关键技术 6
2.2.1 Android四大组件 6
2.2.2 Android进程和线程 8
2.2.3 Android界面构造 10
2.3 本章小结 13
第3章 音乐播放器需求分析 14
3.1 可行性分析 14
3.2 系统需求分析 14
3.3 本章小结 16
第4章 音乐播放器的总体设计 17
4.1 Android数据库设计 17
4.1.1 字段设计 17
4.1.2 SQLiteDatabase数据库 18
4.2 系统流程设计和结构设计 19
4.2.1 音乐播放器的系统流程设计 19
4.2.2 系统功能设计和结构设计 20
4.3 本章小结 21
第5章 音乐播放器主要模块的详细设计与实现 22
5.1 音乐播放器欢迎界面模块设计 22
5.1.1 页面设计 22
5.1.2 代码编写 22
5.2 文件管理界面设计 23
5.2.1 本地音乐模块 25
5.2.2 网络音乐模块 26
5.3.3 下载管理模块 27
5.3 播放主界面设计 28
5.3.1 音轨的实现 30
5.3.2 播放、暂停、停止、上/下曲等功能设计 31
5.3.3 播放模式设计 33
5.4 菜单功能设计 33
5.4.1 常用模块 34
5.5 本章小结 35
第6章 系统测试 36
6.1 搭建Android开发环境 36
6.1.1 安装Java JDK 36
6.1.2 安装SDK模拟器 37
6.1.3 管理SD卡文件 38
6.2 系统调试 39
6.3 系统功能测试 41
6.3.2 音乐播放功能测试 42
6.3.3 菜单功能测试 42
6.4 问题和展望 43
参考文献 44
致 谢 46
附 录 47
网友评论