Android音乐播放器毕业论文 - 图文

更新时间:2024-03-09 11:30:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

吉林化工学院毕业设计说明书

基于Android平台的音乐播放器 The Development of Mobile Music Player Based on Android platform system

学生学号: 学生姓名: 专业班级: 指导教师: 职 称: 起止日期:

吉 林 化 工 学 院

Jilin Institute of Chemical Technology

摘 要

当今社会的生活节奏越来越快,随着硬件移动设备的越来越先进,人们对移动设备的要求也越来越高,从以前的追求技术到现在的追求视觉,因此,也逐步的提高了对系统的要求,本文主要是对Android系统上音乐播放器应用程序的设计与实现进行讨论。本论文的音乐播放器采用了Android开源系统技术,利用Java语言和Eclipse编辑工具对播放器进行编写,同时给出了详细的系统设计过程、部分界面图及主要功能运行流程图,本文还对开发过程中遇到的问题和解决方法进行了详细的讨论,该音乐播放器集播放、暂停、停止、上一首、下一首、音量调节、歌词显示等功能于一体,性能良好,在Android系统中能独立运行。该播放器还拥有对手机文件浏览器的访问功能、歌曲播放模式、以及歌词开闭状态的友好设置。

关键词:Android;开源系统;音乐播放器

- I -

基于Android平台的音乐播放器开发与设计

Abstract

The pace of life in today's society, with more advanced hardware mobile devices for mobile devices, people more and more is also high, the requirements from the previous pursuit to pursue the visual technology, therefore, also gradually improve the system requirements, the paper mainly is to take on a music player from system design and realization of the application is discussed. Take the system is an open source, it is based on the operating system, use the Linux music player of the Android open-source system technology, using the Java language and editing tools for players to Eclipse. Presents the detailed design process, the part of the system and the main functions of operation interface diagram of height, this paper also flow process problems and solving methods are discussed in detail, and the music player episode, pause, stop and a, next, volume adjustment, lyrics display functions, such as performance is good, can operate independently in the Android system. This player has access to the file browser phone functions, songs and played pattern, open and close condition of friendly words.

Key Words:Android;open source system;music player

- II -

目 录

摘 要 ···································································································································· I Abstract ·············································································································································· II 第1章 绪论 ····································································································································· 1

1.1 选题的目的及意义 ··········································································································· 1 1.2 本课题涉及内容的研究现状 ·························································································· 1 1.3 本系统要实现的基本目标和研究内容 ········································································· 2 第2章 系统的可行性研究 ············································································································ 3

2.1 经济上的可行性 ··············································································································· 3 2.2 技术上的可行性 ··············································································································· 3 2.3 操作上的可行性 ··············································································································· 3 第3章 需求分析 ···························································································································· 4

3.1 软件目标 ··························································································································· 4 3.2 功能需求 ··························································································································· 4 3.3系统界面需求 ···················································································································· 4 3.4系统性能需求 ···················································································································· 4 第4章 系统的总体设计 ················································································································ 5

4.1 设计思想 ··························································································································· 5 4.2 系统功能结构图 ··············································································································· 5 4.3 开发语言简介 ··················································································································· 6

4.3.1 Android简介 ·········································································································· 6 4.3.2 Android Features特性 ··························································································· 7 4.3.3 Android基本框架(Android Architecture) ······················································ 7 4.4.4 Android系统的四大组件 ······················································································ 9 4.4.5 SQLite简介 ·········································································································· 10 4.4 搭建Android开发环境 ································································································· 11 4.5 Android 音乐播放器的工程 ·························································································· 13

4.5.1 Android项目 ····································································································· 13 4.5.2 Android工程程序结构 ····················································································· 14 4.5.3 AndroidManifest.xml文件 ··············································································· 15

第5章 数据库的设计 ·················································································································· 18

5.1 数据库表的介绍 ············································································································· 18

- III -

基于Android平台的音乐播放器开发与设计

5.1.1用户注册表 ··········································································································· 18 5.1.2 完成下载的音乐表 ····························································································· 19 5.1.3 播放清单表 ·········································································································· 19 5.2 数据库连接 ····················································································································· 19 第6章 系统详细设计 ·················································································································· 21

6.1 欢迎界面模块详细设计 ································································································ 21 6.2播放列表模块详细设计 ································································································· 22 6.3 歌曲播放模块详细设计 ································································································ 25 6.4 本地音乐模块详细设计 ································································································ 27 6.5 会员登录模块详细设计 ································································································ 29 6.6 会员注册模块详细设计 ································································································ 31 6.7 音乐下载模块详细设计 ································································································ 33 6.8 设置皮肤模块详细设计 ································································································ 35 第7章 系统测试 ·························································································································· 37

7.1 登录功能测试 ················································································································· 37 7.2 图片上传功能测试 ········································································································· 38 7.3 文件上传功能测试 ········································································································· 39 结 论 ········································································································································· 41 参考文献 ········································································································································· 42

致 谢 ································································································································· 43

- IV -

第1章 绪论

1.1 选题的目的及意义

Android是谷歌于2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。

随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。针对以上各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放RMVB格式的视频文件。此外,还能支持中文、英文等语言界面。

要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如MP3,WAV等,拥有播放菜单,能选择播放清单,具备一般播放器的功能,如快进,快退,音量调节等。播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。

1.2 本课题涉及内容的研究现状

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联

- 1 -

基于Android平台的音乐播放器开发与设计

盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。目前最新SDK版本为Android 4.0.3。

1.3 本系统要实现的基本目标和研究内容

本文要实现的基本目标和主要研究内容有以下几个方面:

(1)音乐的播放,包括上一首、下一首、暂停、进度条的更新和控制。

(2)本地音乐的管理,自动扫描SD卡的音乐,在列表显示30秒以上的音频文件。 (3)会员特权,包括在线音乐列表、下载列表、背景皮肤的更新。

- 2 -

第2章 系统的可行性研究

当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,是的手机操作系统也出现了不同各类,现在的市场主要有三个手机操作系统,Windows mobile,symbian,以及谷歌的Android操作系统,其中占有开发源代码优势的Android系统有最大的发展前景。那么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌Android系统就能做到。本文的音乐播放器就是基于谷歌Android手机平台的播放器。

2.1 经济上的可行性

Android 是 Google 历经数年和投资数亿美元开发出来的智能手机系统,是 基于 Linux 内核的操作系统,是 Google 公司在 2007 年 11 月 5 日公布的手机操 作系统。随着各大移动终端生产商大力开发和生产基于 Android 的移动智能设备, Android迅速得到业界和社会的认可,并成为整个产业的热点,基于 Android 平 台的各类人才逐渐成为各大企业竞相争夺的焦点。 而且 Android 是一个开放的系统,不管是企业还是个人都可以参与来表达自己的创意和想法。

2.2 技术上的可行性

Google 发起了围绕 Android 的组织——开放手机联盟, 其英文全称为 “Open Handset Alliance”。 它采用了软件堆层(software stack,又名以软件叠层) 的架构,主要分为三部分。底层 Linux 内核只提供基本功能;其他的应用软件则 由各公司自行开发,部分程序以 Java 编写。

2.3 操作上的可行性

本系统采用Android框架,可以在eclipse中安装Android开发插件,使用Android模拟器也可以使用任意Android终端。模拟器和真正的Android手机没有太大区别,人们对手机操作早已熟悉。

综合以上三方面,该系统具有很高的开发可行性,无论是从技术上经济上还是操作上。故此,可以设计该系统流程图,建立数据字典。

- 3 -

基于Android平台的音乐播放器开发与设计

第3章 需求分析

软件需求分析工作是软件生存期中重要的一步,也是决定性的一步。软件需求分析是一个不断认识和逐步细化的过程,该过程将软件计划阶段所确定的软件范围逐步细化到可详细定义的程度。需求分析还是软件开发的基础,假定在该阶段发现一个错误,解决它需要用一小时的时间,到设计、编程、测试和维护阶段解决,则要花几倍甚至更多的时间。因此对于复杂系统而言,首先要进行需求分析。开发人员应该对用户的要求及现实环境进行调查和了解。

3.1 软件目标

本系统属于用户常用的音乐播放器。可以方便用户平时对音乐文件的操作。本系统应达到以下目标:

(1)软件采用人机交互的方式,界面美观友好,操作灵活、方便、富有个性化。 (2)能够对音乐文件进行有效的管理。

(3)系统应最大限度地实现易维护性和易操作性。

3.2 功能需求

功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了用户的业务需求。用户需求文档描述了用户使用产品必须要完成的任务。针对音乐播放器分别对音乐播放、在线音乐播放及会员特权的换肤等功能进行详细的调研和分析,总结出如下的用户需求信息。

3.3系统界面需求

播放器界面要求布局合理,颜色舒适,控制按钮友好,要求整体有一个主要的元素标准,统一的主题思想。

3.4系统性能需求

根据Android手机系统要求无响应时间为5秒,所以就有如下性能要求: 1) 当要求歌曲播放时,程序响应时间最长不能超过5秒 2) 当要求歌曲暂停时,程序响应时间最长不能超过5秒 3) 当要求歌曲上/下一首时,程序响应时间最长不能超过5秒

- 4 -

第4章 系统的总体设计

软件功能设计是使整个软件能基本实现音乐的播放、上一首、下一首、暂停等功能,能让用户通过本软件欣赏音乐。在线音乐浏览和下载,背景皮肤的切换等功能更好的增强用户体验。

4.1 设计思想

(1)将系统分成几个相对独立的模块。

(2)分层的模块化程序设计思想,整个系统采用模块化结构设计。作为应用程序有较强的可操作性和扩展性。

(3)合理的数据流设计,在应用系统设计中,相对独立的模块间以数据流相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性。

4.2 系统功能结构图

根据上述需求分析,本Android版音乐播放器可分为一下几个模块: 播放器基本功能如图4-1所示:

图4-1 播放器基本功能图

- 5 -

基于Android平台的音乐播放器开发与设计

播放清单列表如图4-2所示:

图4-2 播放器清单列表图

从图中看出播放列表功能的参与者依然是用户,这表达了客户体验的要求,当用户选中列表中的一首歌时,会有一个列表选项,具备播放、移除功能。

4.3 开发语言简介

4.3.1 Android简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。

Android是基于Linux内核的软件平台和操作系统,早期由Google开发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。它采用了软件堆层(software stack,又名以软件叠层)的架构,主要分为三部分。低层以Linux内核工作为基础,只提供基本功能;其他的应用软件则由各公司自行开发,以Java作为编写程序的一部分。另外,为了推广此技术,Google和其它几十个手机公司建立了开放手机联盟。Android在未公开之前常被传闻为Google电话或gPhone。大多传闻认为Google开发的是自己的手机电话产品,而不是一套软件平台。到了2010年1月,Google开始发表自家品牌手机电话的Nexus One。目前最新SDK版本为Android 4.0.3。

- 6 -

4.3.2 Android Features特性

Android系统有如下的几大特性: ? 应用程序框架 支持组件的重用与替换 ? Dalvik虚拟机 专门为移动设备做了优化

? 内部集成浏览器 该浏览器基于开源的WebKit引擎

? 优化的图形库 包括2D和3D图形库,3D图形库基于OpenGL ES ? SQLite 用作结构化的数据存储

? 多媒体支持 包括常见的音频、视频和静态印象文件格式(如 MPEG4、H.264、MP3、

AAC、 AMR、JPG、PNG、 GIF) ? GSM电话(依赖于硬件)

? 蓝牙Bluetooth,EDGE,3G and WiFi (依赖于硬件) ? 照相机,GPS,指南针,和加速度计 (依赖于硬件)

? 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和Eclipse集

成开发环境插件

4.3.3 Android基本框架(Android Architecture)

Android平台的基本框架如图1-1所示。

图1-1 Android基本框架图

(1)Applications

- 7 -

基于Android平台的音乐播放器开发与设计

Application Android会同一个核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是用JAVA编写的。 (2)Application FrameWork

开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。

所有的应用程序都由一系列的服务和系统组成,包括:

? 可扩展的视图(Views)可以用来建应用程序,包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons),甚至包括一个可嵌入的web浏览器

? 内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。

? 资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件(layout files)。

? 通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。 ? 活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

(3)Libraries库

Android 包括一个被 Android 系统中各种不同组件所使用的 C/C++ 库集。该库通过 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 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

(4)Android Runtime

Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。

- 8 -

每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对于同时高效地运行多个VMs来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA汇编器编译,然后通过SDK中的dx工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于linux的一些功能,比如线程机制和底层内存管理机制。 (5)Linux内核

Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理,网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。未来发展老牌智能手机软件平台制造商Symbian发言人则表示:Google的Android只不过是另一个linux,symbian对其它软件与其形成的竞争并不感到担心。除了北美之外,Symbian在其它地区智能手机市场都占有大部分市场份额。与iPhone相似,Android采用WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比iPhone等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部Web应用的单一平台。 4.4.4 Android系统的四大组件

在Android系统中,为我们提供了四大基本组件,每个组件是一个视图,但是有些是可见的,有些是不可见的视图,像Activity,ContentProvider是可见的视图,Service和BroadcastReceiver是不可见的,它们只在系统的后台运行。下面分别介绍四大组件:

(1)Activity 简介

在Android系统中Activity提供可视化的用户界面,一个Android应用通常由多个Activity组成。多个Activity组成了Activity栈(Stack),当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。

(2)Service 简介

顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此 没有可视化界面定义一个Service类比较简单,只要继承Service类,实现其生命周期 中的方法就可以了。一个定义好的Service必须在AndroidManifest.xml配置文件 注册,通过元素声明才能使用.Service有自己的生命周期,我们可以调 用 startService()启动一个Service或者bindService()方法来绑定一个存在的 Service 。

(3)Broadcast Receiver 简介

- 9 -

基于Android平台的音乐播放器开发与设计

Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用Intent来启动一个程序组件,我们还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。

(4)ContentProvider简介

Content Provider 用来保存和检索数据,并且使应用程序之间相互访问数据成为可能。它是跨应用程序共享数据的唯一方法。

Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的Content Provider。它们被定义在Android.provider包下面。通过这样定义好的ContentProvider 我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定ContentProvider共享我们的数据,方便用户的访问。 4.4.5 SQLite简介

SQLite,是一款轻量级的关系型数据库。由于它占用的资源非常少,所以在很多嵌入式设备都是用SQLite来存储数据。并且它目前支持Windows/Linux/Unix等等主流的操作系统,兼容性还不错。我们也可以用多种开发语言如C#、Java、PHP等来通过ODBC接口操作SQLite,十分方便。

Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。如果你想要开发 Android 应用程序,一定需要在 Android 上存储数据,使用SQLite 数据库是一种非常好的选择。

本数据库支持功能如下:

1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并且对于继承类中的注解字段也支持自动建表。

2.自动支持增删改,增改支持对象化操作:增删改是数据库操作的最基本单元,不用重复写这些增删改的代码,并且添加和更新支持类似于hibernate中的对象化操作。

3.查询方式灵活:支持android框架提供的方式,也支持原生sql方式。

4.查询结果对象化:对于查询结果可自动包装为实体对象,类似于hibernate框架。 5.查询结果灵活:查询结果支持对象化,也支持结果为List>形式,这个方法在实际项目中很实用,且效率更好些。

- 10 -

4.4 搭建Android开发环境

任何事物要运行,都要有它的环境,Android也有它的环境才能够运行,下面介绍Android的开发环境配置。

搭建开发环境需要的软件:

1) 操作系统:window XP或linux

2) 软件包:Android SDK(Software Development kit Java Development kit) 、ADT(Android Develoopment Tool)

3) IDE环境:Eclipse IDE+ADT Eclipse3.3以上

4) JDK:Java Runtime Environment虚拟机 、(JDK)Java Development kit 安装步骤如下:

第一步:安装Java虚拟机sun-java6-jdk版本。

第二步:安装Eclipse3.5工具,到官网http://www.eclipse.org/downloads/,选择版本下载后进行安装。(如图1-2)

Eclipse工具的版本如图1-2所示:

图1-2 Eclipse工具的版本图

第三步:安装Android SDK:首先要下载SDK,可以在这个网址下载Http://developer.Android.com/sdk ,选择相应的系统进行安装。

sdk下载的地址图如图1-3所示:

图1-3 sdk下载的地址图

第四步:安装Android ADT插件。运行Eclipse,选择help->install new software 选择add,将会弹出一个【Add Site】对话框。 【Add Site】对话框如图1-4:

- 11 -

基于Android平台的音乐播放器开发与设计

图1-4 【Add Site】对话框图

点击OK,选择要安装的软件,占next,然后选择接受协议,直到安装成功,重启Eclipse软件,设置Android SDK Home,Window->refrence。

设置Android SDK Home界面如图1-5所示:

图1-5 设置Android SDK Home界面图

在SDK location中输入SDK Tools路D:\\Androidsoftware\\Android-sdk-windows 点击OK,这样Android环境就已经搭建成功了。

- 12 -

4.5 Android 音乐播放器的工程

4.5.1 Android项目

Android的四大基本组件:Activity(活动),Service(服务),BroadcastReceiver(广播),ContentProvider(内容提供者),各组件之间要进行切换需要一个意图或企图Intent类,通过启动StartIntent()方法来使各组件进行跳转

Android的五大布局方式:LinearLayout(线性布局) FrameLayout(帧布局) TableLayout(表格布局) AbsoluteLayout(绝对布局) RelativeLayout(相对布局)

五种布局方式可以相互嵌套,Android各种漂亮的界面都是通过嵌套布局而实现的。 Android的线程,以及线程之间通信的中介:Handler类

Android配置文件:AndroidManifest.Xml及res资源文件中各种属性布局方式引用的资源等。

Android系统将插件ADT集成到了Eclipse工具上,因此,一个Android程序启动后,系统会启动一个模拟器(Emulator)(图1-6),该模拟器是一款手机板的样式,拥有手机硬件的基本操作。我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定。

图1-6 模拟器图

- 13 -

基于Android平台的音乐播放器开发与设计

4.5.2 Android工程程序结构

Android工程基本结构目录包括:src (源代码)、gen(Android系统自动生成的常量)、Res(资源文件):主要存放程序界面的布局配置(.xml)文件和图片资源。AndroidMainfes.xml 是四大组件的驱动配置文件,有它的存在,Android程序的四大组件才可以正常的跳转。Android资源的类型和布局(图1-7)

图1-7 资源类型和布局图

下图1-8 到图1-12为音乐播放器代码结构和各界面的配置文件,图像资源等,图1-8 为一个Android工程所必须的结构,图3-9为该播放器的.Java文件,图1-10为播放器所用到的字符串,字体大小,字的颜色等配置文件,图1-11为 该播放器的各种界面的布局配置文件,图1-12为该播放器的图片资源。

图1-8音乐播放器代码结构和各界面的配置文件,图像资源等如图1-9到图1-12:

- 14 -

图1-9

图1-10

图1-11

图1-12

4.5.3 AndroidManifest.xml文件

Android系统的任何一个程序启动都需要AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个AndroidManifest.xml文件,此配置文件是整个程序能够正常运行的核心,它里面包含了Android SDK的版本,程序运行的默认Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml中寻找标识来作出相应的操作。任何一个AndroidManifest.Xml文件的格式都应为:

Android系统有一个编码的规定,支持的编码是\,当程序中出现乱码是,我们须将其编码格式转化为\在 AndroidManifest.xml中会在第一行声明一句:

xmlns(XML namespace)是一个命名空间,它就像一条河的源头一样能让我们找到系统架构,每一个配置文件必须有这个xmlns,否则程序中的所使用的所有资源将无法找到。

在application元素我们定义Android:icon=\

- 15 -

基于Android平台的音乐播放器开发与设计

Android:label=\,Android:icon是程序在手机中显示的图片,我们运用@drawable/icon表示了对res/drawable目录下的icon.png的引用。@string/app_name表示了对res/value目录下string.Xml中定义的app_name参数的引用。

这是系统确定的首先要启动的Activity是PlayRackActivity。

在intent-filter选项中,有action和category等等属性,我们需要定义action的值为Android.intent.action.MAIN,category的值为Android.intent.category.LAUNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的Activity。当我们需要通过一个组件触发另一个组件时,我们将设定action和category的其它属性值,系统会根据我们设定的属性值去AndroidManifest.Xml的application 中寻找标识,任何一个Activity的action和category是唯一,所以程序在任何时候都能唯一启动一个Activity,这样,不同的Activity之间的跳转就实现了。

在AndroidManifest.Xml中有一个根结点,它是我们需要定义的ADT版本,例如我们将其值设定为Android:minSdkVersion=\,则表示此Android工程所用的版本为2.3,Android还有1.1、1.5、1.6、2.0、2.1、2.2、2.3、3.0、4.0这几个版本。

如果我们需要对网络进行访问,比如打开一个网页,刚我还需要设置一个网络访问权限uses-permission,将其的值设置为Android:name=\,我们就可以访问网络了。当然uses-permission还有很多其它的权限,例如GPS定位权限,浏览器数据存取权限com.Android.browser.permission.READ_HISTORY_BOOKMARKS等等。

当程序的任何一个组件要用到时,都必须在AndroidManifest.Xml文件中声明。四大组件要使用前都需要声明,其声明方式如下:

- 16 -

其中声明provider时还需要声明其授权 authorities。每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性。过滤器intent-filter 有两种启动方式来启动界面。

1) 显示方式

显示方式是在代码中的直接启动组件,启动时会声明Intent,在它的构造方法Intent(组件1,组件2)中直接指定一个组件的名字,然后调用方法startIntent(intent)以启动指定的组件。

2) 隐式方式

隐式方式是通过过滤器来过滤完成的,启动的组件必须满足action和category的条件才能够启动该组件。这些属性是在AndroidManifest.Xml文件中声明的。两种启动方式都可以通过程序setAction(ACTION常量)和startActivity(intent)或配置文件两种方式来实现组件的跳转。

- 17 -

基于Android平台的音乐播放器开发与设计

第5章 数据库的设计

数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织形式等一系列问题。

数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待 解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择。

本系统采用SQLite数据库系统,在该系统中新建一个数据库,将其命名为music.db。然后,在该系统中创3个数据库表,分别为用户注册表(logintbl) 、音乐下载表(downloadhistorytbl) 、播放清单表(itemtbl)。

5.1 数据库表的介绍

本系统采用SQLite数据库系统,在该系统中新建一个数据库,将其命名为music.db。然后,在该系统中创3个数据库表,分别为用户注册信息表(logintbl) 、完成下载的音乐表(downloadhistorytbl) 、播放清单表(itemtbl)。

下面对主要的数据库表做简要的介绍:

表5-1音乐播放器表清单

表名称 logintbl downloadhistorytbl itemtbl

表用途 用户注册信息表 完成下载的音乐表 播放清单表

5.1.1用户注册表

图片新闻表包含了用户的ID、用户名、密码、邮箱。

表5-2用户注册信息表

列名 _id username password mailbox

数据类型 integer text text text

长度 4 20 20 50

字段描述

用户ID,主键,自动增长 用户名 用户密码 用户邮箱

- 18 -

5.1.2 完成下载的音乐表

完成下载的音乐表记录了工会新闻的基本信息。该表是整个工会管理系统的核心表,几乎所有的操作包括新闻的发布、更新、显示等,都和该表有着密切的关系

表5-3 通知基本信息表

列名 _id musicname albumname albumpicpath singer composer

adddate

数据类型 integer text text text text text text

长度 4 50 20 30 4 4 4

字段描述

歌曲编号,主键,自动增长 歌曲名称 唱片集

唱片集缩略图路径 歌手名称 作曲家 是否被下载

5.1.3 播放清单表

播放清单表主要是对新闻进行详细的分类。

表5-4 播放清单表

列名 _id groupid musicid

数据类型 integer integer integer

长度 5 5 5

字段描述 编号,主键 组编号 歌曲编号

5.2 数据库连接

Android数据库存储的位置在data/data/<项目文件夹>/databases/目录下。

Android是利用ContentProvider作为内容提供商,SQLiteOpenHelper数据库帮助类来进行对数据库的创建和操作。通过Context.getContentResolver()方法直接对数据库进行操作。程序中数据库类为DBHelper extends SQLiteOpenHelper(继承关系),内容提供类DBProvider extends ContentProvider(继承关系)。

主要代码如下:

- 19 -

基于Android平台的音乐播放器开发与设计

public DBOpenHelper(Context context) { super(context, DBNAME, null, VERSION); }

public void onCreate(SQLiteDatabase db) { String histroySql = \ \ + \ autoincrement ,\ + \ not null ,\ + \ + \ String itemSql = \ \ + \ + \ + \ String loginSql = \ \ + \ autoincrement ,\ +\ \ \ \ db.execSQL(histroySql); db.execSQL(itemSql); db.execSQL(loginSql); }

- 20 -

第6章 系统详细设计

6.1 欢迎界面模块详细设计

在欢迎界面模块的设计中,应用了LinearLayout布局和Animation效果。 欢迎界面模块运行结果如图6-1所示。

图6-1 欢迎界面

(1)页面设计

整体为LinearLayout布局,其中包含两个ImageView控件,设置两个图片为垂直布局。

本LinearLayout布局的id值是 llSplash,背景颜色为“#ffffffff” 。

(2)代码编写

- 21 -

基于Android平台的音乐播放器开发与设计

欢迎界面模块主要是用于增强用户体验,让用户较容易接受本软件。在编写代码前,首先要定义一个Animation类对象,以便编写代码时调用该类中方法,主要代码如下:

private LinearLayout llSplash; private void setupView() { llSplash = (LinearLayout) findViewById(R.id.llSplash); Animation anim = AnimationUtils.loadAnimation(this, android.R.anim.fade_in);

}

llSplash.startAnimation(anim);

anim.setAnimationListener(new AnimationListener() { });

public void onAnimationStart(Animation animation) { // TODO Auto-generated method stub }

public void onAnimationRepeat(Animation animation) {

}

public void onAnimationEnd(Animation animation) { }

Intent intent = new Intent(WelcomeActivity.this, MainTabActivity.class); startActivity(intent); finish();

6.2播放列表模块详细设计

当欢迎界面过后,自动跳转到主界面。播放列表模块运行结果如图6-2所示。

- 22 -

图6-2 播放列表界面

(1)页面设计

当进入主界面,默认是Tabhost,且此Tabhost包含三个选项卡,第一个则为播放列表模块。

播放列表模块中是一个ListView控件,ListView中的item采用LinearLayout布局,其中包含了歌曲名称信息、歌手名称信息和歌曲时长信息,此三项用TextView显示。

单机menu建,会出现menu菜单,显示歌曲排序信息,分别按照歌名、歌手、时长排序。

(2)界面功能的实现

最上面是Tabhost控件,设置三个选项卡。对应的代码如下: public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); TabHost tabhos= getTabHost();

tabhos.setBackgroundColor(Color.parseColor(\ tabhos.addTab(tabhos

.newTabSpec(\播放列表\

getResources().getDrawable(android.R.drawable.btn_star)) .setContent(new Intent(this, MusicPlayActivity.class)));

- 23 -

基于Android平台的音乐播放器开发与设计

tabhos.addTab(tabhos

.newTabSpec(\本地音乐\

getResources().getDrawable(android.R.drawable.btn_star)) .setContent(new Intent(this, ListenerActivity.class))); tabhos.addTab(tabhos }

Tabhost中的ListView是通过Layout布局文件产生。通过适配器Adapter向其中添

.newTabSpec(\会员特权\

getResources().getDrawable(android.R.drawable.btn_star)) .setContent(new Intent(this, MemberActivity.class)));

加详细的数据。

通过重写onCreateOptionsMenu方法,设置menu菜单,并对其设置监听事件便可实现对歌曲排序的操作。menu事件的代码如下: public boolean onCreateOptionsMenu(Menu menu) {

case Const.MENU_SORT_MUSICNAME:// 按歌名排序

comparator = new MusicSortByName(); break;

comparator = new MusicSortBySinger(); break;

- 24 -

menu.add(1, Const.MENU_SORT_MUSICNAME, 2, \歌名排序\

android.R.drawable.ic_menu_save); android.R.drawable.ic_menu_save);

menu.add(1, Const.MENU_SORT_SINGER, 3, \歌手排序\menu.add(1, Const.MENU_SORT_TIME, 4, \时长排序\

android.R.drawable.ic_menu_save); return super.onCreateOptionsMenu(menu); }

public boolean onOptionsItemSelected(MenuItem item) {

Comparator comparator = null; switch (item.getItemId()) {

case Const.MENU_SORT_SINGER:// 歌手排序

}

case Const.MENU_SORT_TIME:// 时长排序 comparator = new MusicSortByTime(); break; }

ArrayList musics = app.sort(comparator); adapter.ListChanged(musics);

return super.onOptionsItemSelected(item);

单击ListView的每个item都会播放相对应的歌曲,并跳转到歌曲播放界面,本操作时通过发送广播完成的。主要代码如下:

public void onItemClick(AdapterView parent, View view, int position, long id) {

app.setCurrentIndex(position);

Intent intent1 = new Intent(MusicPlayActivity.this, PlayMainActivity.class); startActivity(intent1);

Intent intent = new Intent(); if (serviceStoped) {

}

}

startService(serviceIntent); serviceStoped = false;

// 发送广播启动音乐

intent.setAction(Const.ACTION_PLAY); sendStickyBroadcast(intent); // 发送广播更新进度条

intent.setAction(Const.ACTION_UPDATE_PROGRESS); // 发送广播更新歌曲名称

intent.setAction(Const.ACTION_CURRENT_MUSIC_CHANGED); sendStickyBroadcast(intent);

6.3 歌曲播放模块详细设计

(1)歌曲播放界面显示

- 25 -

基于Android平台的音乐播放器开发与设计

该模块可以控制歌曲的播放进度,显示正在播放的歌曲的名称,单击进行上一首、下一首、暂停、播放等功能。界面如图6-3所示。

图6-3 歌曲播放主界面

(2)歌曲播放界面实现

该界面要到了较为复杂的布局,采用了多个LinearLayout布局和TextView、SeekBar、ImageButton等控件。在TextView应用到了跑马灯效果,显示较长的歌曲名称。对ImageButto控件设置了单击效果,重新定义了SeekBar控件的风格,使得界面更加人性化,增强了用户体验。

设置TextView跑马灯效果的代码如下:

android:singleLine=\

android:ellipsize=\

android:marqueeRepeatLimit=\android:focusable=\

android:focusableInTouchMode=\ android:scrollHorizontally=\

自定义SeekBar风格的代码如下:

- 26 -

android:layout_marginTop=\ android:layout_width=\ />

android:layout_height=\

android:progressDrawable=\android:thumb=\android:id=\android:max=\android:progress=\

6.4 本地音乐模块详细设计

在本地音乐模块的设计中,主要技术的应用是SD卡的数据扫描,可对本地音乐文件进行查找和删除操作;长按每个item都会有相对应的操作。

本地音乐模块运行结果如图6-4所示。

图6-4 本地登录界面

(1)页面设计

- 27 -

基于Android平台的音乐播放器开发与设计

布局和音乐播放列表模块类似,采用了ListView控件,不同的是每个item增加了音乐文件的缩略图和专辑名称的显示。

(2)代码编写

重写了onContextItemSelected方法,长按item会触发新的操作。显示效果如图6-5所示。

图6-5本地歌曲操作界面

相关代码如下:

private void addListeners() { // 菜单监听器

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {

menu.add(1, 1, 1, \删除\menu.add(1, 2 ,1 ,\播放\menu.setHeaderTitle(\操作\

- 28 -

private AlertDialog dialog; private ListView lvMusics;

private LocalMusicUtils musicUtils; private ListenerAdapter adapter;

lvMusics.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

}

} });

public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); Music music = (Music) adapter.getItem(info.position); switch (item.getItemId()) { } }

case 1:// 删除

musicUtils.delete(music);

adapter.removeMusic(info.position); break;

return super.onContextItemSelected(item);

6.5 会员登录模块详细设计

在会员登录模块中,用到了longintbl表,和Android中Dialog、Button、EditText、TextView和CheckBox控件,并对Button控件添加点击效果,使操作更加个性化,增强用户体验。会员登录模块运行结果如图6-6所示。

图6-6 会员登录界面

单机会员特权会弹出对话框,提示会员特权内容,界面如图6-7所示。

- 29 -

e.printStackTrace(); } catch (IOException e) { e.printStackTrace();

}

} synchronized (this) { try { wait(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } };

6.8 设置皮肤模块详细设计

会员皮肤设置模块为用户提供了十多种背景风格,可单机随意切换,为用户提供良好的视觉体验,增强软件的特性。设置皮肤模块运行结果如图6-10所示。

图6-10 设置皮肤界面

- 35 -

基于Android平台的音乐播放器开发与设计

(1)页面设计

设置皮肤界面采用多个LinearLayout布局,应用Button、TextView和ImageButton等控件,为按钮设置Animation单击效果,增强用户体验。

(2)界面功能的实现

换肤功能主要是通过BroadcastReceiver机制,通过发送广播修改背景风格,实现换肤效果。对应的代码如下:

private ColorReceiver receiver; protected void onResume() {

}

receiver = new ColorReceiver();

IntentFilter filter = new IntentFilter();

filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\filter.addAction(\

filter.addAction(\filter.addAction(\registerReceiver(receiver, filter); super.onResume();

- 36 -

第7章 系统测试

经过前一阶段的设计与开发,本次设计的基于Android平台的音乐播放器基本结束。为了尽早发现软件的错误和漏洞,使软件能够长期、稳定的运行下去,下面将对本系统的主要部分进行软件测试。

测试环境: 硬件环境为普通计算机配置后者2.3版本以上的Android手机。软件环境为系统软件:WindowsXP,工具软件:.Eclipse、SQLite和Android手机模拟器。

系统关键测试点:登陆管理测试、音乐播放功能测试,会员换肤功能测试。

7.1 登录功能测试

软件运行后,主界面的第三个选项卡所显示的界面为登录界面。如果用户输入的用户名错误暨用户名不存在,则会给用户弹出一个Toast提示用户,“该用户还未注册,请先注册。”。显示结果如图7-1所示:

图7-1 登录功能测试图1

若密码输入错误,则通过Toast提示用户“密码错误,请重新输入。” 。显示结果如图7-2所示:

- 37 -

基于Android平台的音乐播放器开发与设计

图7-2 登录功能测试图2

7.2 音乐播放功能测试

在播放列表单击歌曲进入播放界面后,开始播放音乐,并且更新歌曲进度条和左上角的歌曲名。屏幕下方的4个控制按钮可准确操作,包括上一首、下一首、播放和暂停功能。音乐播放功能测试如图7-3所示。

图7-3播放功能测试图

- 38 -

7.3 会员换肤功能测试

在进入会员界面时,单击第三个选项卡,进入会员皮肤设置页面。对想要设置的皮肤样式按钮进行单机操作,会立即切换相应背景皮肤。会员换肤功能测试如图7-4和7-5所示。

图7-4 文件上传功能测试图1

- 39 -

基于Android平台的音乐播放器开发与设计

图7-5 文件上传功能测试图2

- 40 -

结 论

通过对Android手机平台的音乐播放器软件的开发,使我对Android音乐播放器系统的整体设计有一个深入的了解,对整个流程也会有一个清晰的认识。开发Android音乐播放器,要抓住开发的核心部分,音乐播放器大体由播放主界面、播放列表、会员登录注册、在线音乐下载、本地音乐操作和会员皮肤设置六大核心组成,只要掌握了这六部分的开发,音乐播放器就能初具规模。而其它的功能都是在这六个功能的基础上去补充添加的,但是这是功能的确是必不可少的功能,否则就不能算是音乐播放器了。

音乐播放器软件实现了播放器的基本功能:播放,暂停、上/下一首、歌曲排序、文件浏览等功能。运用的系统平台是现今最热门的Android系统,是一个开源的基于Linux系统的手机平台。是以Java语言编写SQLite数据库支持SharePreference配置文件的组合方式进行数据管理。实现了音乐播放器的系统编程。

本次程序设计,对播放器的系统结构框架做了精心的构思与设计,采用主要开发工具是Eclipse6.0+Java语言的支持,Android Development Tool的插件,和Android SDK2.3版本的全面结合,才使整个音乐播放器系统得以实现。

在开发过程中我学到了一些经验:系统分析的好坏将决定着的系统开发成功与否,一份好分析设计将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码心底有数,有条不絮。

总之,经过几个月的Android系统技术知识的学习和对音乐播放器的构思与设计,使我对Android系统有了一定的了解,让我对Android系统上的开发流程和开发模式有了深入的了解,这对我以后的Android项目开发有很大的帮助。

在此论文抒写过程中,我还要感谢我的指导老师给我的支持和建议。让我能顺利的完成本次论文。

- 41 -

基于Android平台的音乐播放器开发与设计

参考文献

[1] 张海藩.软件工程导论[M].北京:清华大学出版社,2003.

[2] 靳岩 姚尚朗著.Google Android开发入门与实战[M]. 北京:清华大学出版社,2009-07-01. [3] 高昂著. 支持动态语言的Android平台[M]. 北京:人民邮电出版社, 2009-05-07. [4] 毕广吉.Java程序设计实例教程[M].北京:冶金工业出版社,2007. [5] 何玉杰.数据库原理与应用[M].北京:机械工业出版社,2007.

[6] 辛运帏,饶一梅,马素霞.Java程序设计[M].北京:清华大学出版社,2006.

[7] 余志龙编著.Google Android SDK开发范例大全[M]. 北京:人民邮电出版社, 2009-7-1. [8] Lan Sommerville.Software Engineering[M].Addison Wesley,2004.

[9] RogerS.Pressman.SoftwareEngineering:APractitioner's Approach[M].McGraw-Hill,2001. [10] Bruce Eckle.Think in Java 2nd Edition[M].Prentice Hall,2000.

- 42 -

致 谢

感谢老师在项目中对我的指导,使我受益匪浅,在老师的大力帮助下终于克服了重重地难关,顺利的完成了这次设计。我所学到的不仅仅是知识,也有对生活的态度,一种积极向上、不断进取、一丝不苟的生活态度。感谢我系各位老师对该项目的大力支持。各位同学对我的帮助,对我在该项目中遇到的很多问题给予了很大的帮助。

感谢答辩委员会全体老师在百忙之中对我的论文提出很多宝贵的建议,让我将论文完善的更加美好。

感谢父母在我大学以及项目期间对我的关怀,还有寝室的同学在四年中给我的帮助关怀,在我的论文中给我最近的帮助。

在本次毕业论文过程中,得到了指导老师的指导与支持。在此特别感谢指导老师的大力帮助。指导老师的悉心指导和大力支持,在总体结构、功能的把握上给予了非常大的帮助,同时根我们提供了非常优越的设计环境,并对我在编程设计等细节工作上给予了耐心的指导,对于我顺利完成这次毕业论文起到了关键性的作用。通过开发本软件,我较全面的掌握了Android基本知识和编程技巧,并在开发过程中我的Java开发能力得到了进一步的提高。

- 43 -

本文来源:https://www.bwwdw.com/article/99ua.html

Top