最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

基于android的音乐播放器的设计毕业论文

IT圈 admin 29浏览 0评论

2024年2月22日发(作者:捷鸿德)

基于android的音乐播放器的设计

摘 要

当今社会发展越来越快,人们对手机软件设备的用户体验要求越来越高,本文主要是对Android系统上对音乐播放器应用程序的设计与实现进行讨论,通过这一过程的设计和论证对手机平台播放器以后的研发有很大意义。本文的音乐播放器使用开源的Android平台,使用Java语言和开发工具Eclipse对音乐播放器代码进行编写。通过设计能够实现音乐的播放、暂停、上一曲、下一曲、音乐列表、声音控制、退出菜单、播放模式等功能,通过对基于Android平台下的播放器的设计,了解音乐播放器的设计原理和实现的相关技术,掌握Android编程思想以及基本的应用组件,对以后从事Android开发有很大的帮助。研究表明,基于Android平台的应用软件开发快捷简单,用户体验良好,必将成为未来移动互联网时代的风向标。

关键词:安卓;音乐播放器;应用程序

Abstract

Today’s society is developing faster and faster, people software for mobile devices are

increasingly demanding the user experience, this article is mainly on music player applications on the

Android system design and implementation are discussed, through the design and demonstration of

this process on the mobile platform player development has great significance in the future. This

music player uses the open source Android platform using the Java language and the Eclipse tools for

writing music player code. The design can realize the music play, pause, a song, the next song, music,

sound control, exit the menu, playback and other functions, on the basis of design under the platform

of Android player based on the design principle, understand the music player and related technology,

master Android programming ideas and the application of the basic components, after the Android

engaged in the development of great help in the future. Research shows that based on the Android

platform application development quick and easy, the user experience is good, will become the future

mobile Internet era of the citizenry.

Key words: Android;music player;application

目 录

摘 要 ......................................................................................................................................... I

Abstract ..................................................................................................................................... II

第1章 绪论 ............................................................................................................................ 1

1.1 选题依据、研究的目的及意义 ................................................................................. 1

1.2 国内外的研究现状 ..................................................................................................... 1

第2章 Android开发基础 .................................................................................................... 3

2.1 什么是Android ........................................................................................................... 3

2.1.1 Android简介 ...................................................................................................... 3

2.1.2 Android的基本框架 .......................................................................................... 3

2.2 Android开发环境的搭建 ........................................................................................... 5

2.3 Android系统的四大组件 ........................................................................................... 7

2.4 Android音乐播放器工程 ........................................................................................... 8

2.4.1 Android项目 ...................................................................................................... 8

2.4.2 Android工程文件结构 ...................................................................................... 9

2.4.3 文件 .............................................................................. 10

第3章 系统需求分析 .......................................................................................................... 13

3.1 系统功能需求 ........................................................................................................... 13

3.1.1 播放器基本控制需求 ...................................................................................... 13

3.1.2 播放友好性需求 .............................................................................................. 15

3.2 系统结构图和流程图 ............................................................................................... 16

3.3 系统其他需求 ........................................................................................................... 18

3.3.1 音乐模块需求 .................................................................................................. 18

3.3.2 艺术家模块需求 .............................................................................................. 18

3.3.3 专辑模块需求 .................................................................................................. 18

3.3.4 最近播放模块需求 .......................................................................................... 19

3.3.5 系统性能需求 .................................................................................................. 19

3.3.6 运行环境需求 .................................................................................................. 19

第4章 详细设计及功能实现 .............................................................................................. 20

4.1 播放器界面的设计 ................................................................................................... 20

4.2 播放动画的设计 ....................................................................................................... 21

4.3 各模块详细设计 ....................................................................................................... 22

4.3.1 声音控制模块 .................................................................................................. 22

4.3.2 播放暂停模块 ................................................................................................. 23

4.3.3 上一曲下一曲模块 ......................................................................................... 24

4.3.4 初曲终曲模块 ................................................................................................. 25

4.3.5 音乐列表模块 .................................................................................................. 26

4.3.6 艺术家模块 ...................................................................................................... 27

4.3.7 专辑模块 .......................................................................................................... 28

4.3.8 最近播放模块 .................................................................................................. 29

4.3.9 系统菜单模块 .................................................................................................. 30

第5章 软件测试 .................................................................................................................. 32

5.1 软件的测试 ............................................................................................................... 32

5.1.1 软件的测试环境 .............................................................................................. 32

5.1.2 测试阶段 .......................................................................................................... 32

5.2 测试结果 ................................................................................................................... 34

结论 .......................................................................................................................................... 35

参考文献 .................................................................................................................................. 36

致谢 .......................................................................................................................................... 38

第1章 绪论

1.1 选题依据、研究的目的及意义

Android播放器是近几年来智能手机当中比较流行的音乐播放软件。利用以前学习过的各种编程知识来设计和开发一款基于Android平台的音乐播放器,还能深入学习Android的程序框架结构,从而进一步学习Android的基础知识和理论,了解手机软件的开发流程,掌握Android应用程序的开发技巧,充实自己的世界观价值观。Android平台是一个完全开放的手机平台,智能手机中的各种应用软件也越来越完备。智能手机操作系统的研究和它的发展已成为当前最活跃的领域[1]。在Android平台设计和开发一款音乐播放器可以摆脱不能随意安装在非智能手机的因素,并且具有很广阔的应用前景。当前音乐播放器由于手机内存和cpu处理能力的限制,在音乐播放、收集、推荐、操作和管理存在技术瓶颈,下一代音乐播放器应该使用云空间,记录用户的使用习惯,将音乐的播放,搜索等功能全部交给云端来处理,这样网络为用户提供互联网资源更庞大,还可以定制服务,管理也更加简单。而近年来出现用户体验良好的Android智能手机系统恰好能作为下一代播放器平台。只有音乐播放器客户端软件的不断创新发展,未来人们欣赏音乐的用户体验才会更好。所以开发一款好的音乐播放器在现在和未来都具很大的实用价值。

1.2 国内外的研究现状

随着科技的快速发展,数码电子设备基本上都含有MP3播放的功能。媒体播放器的发展有两个趋势。首先,支持多样化格式,如常见的音频格式WMA格式、MP3格式、MIDI格式等。这些格式如何能够完美的播放,是现如今研究的一个主流方向。其次一个必要的趋势就是播放器的可扩展性,现如今音乐播放器的功能越来越多,用户体验越来越好,如何能让播放器的功能比现有的更加完备,也是占领用户群的一个因素。由于Android基于Linux内核且具有开源、免费的特性,为播放性能的提升提供了更加便利的条件[2]。Android平台的开放性,可以不仅推动了技术创新(包括平台本身),也有利于降低开发成本,让制造商定制的特点产品很容易。因此,它有一个大的市场潜力[3]。

目前Android开发在国内外主要都是开发应用,分成3类:为大客户开发App、开发通用App(放到安卓市场或者其他App市场下载销售)以及游戏开发(同样放到安卓

市场或者其他App市场销售,目前从事游戏开发的人员也是占比例最大的)。第一类开发者一般是比较专业的大公司,这些公司主要为大客户设计定制App以及提供其所需要的总体解决方案。他们除了会根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般是创业型公司或者是个人开发者,他们的盈利方式一般是2种:为国外客户做外包软件开发或者通过Google的移动广告(AdMob),用户点击广告分成。而在理论上的通过付费下载的方式来盈利的,现在国内少有成功者。第三类开发者目前和第二类开发者类似。

第2章 Android开发基础

2.1 什么是Android

2.1.1 Android简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称[4]。该平台由中间件、操作系统、应用软件和用户界面组成,是首个为移动终端打造的真正开放和完整的软件平台和操作系统[5]。目前最新Android系统版本为Android 4.1,有代表性的手机是三星的galaxy noteⅡ。

Android是基于Linux内核的软件平台和操作系统,早期由谷歌公司研发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。Android采用了软件堆层的架构,由三个部分组成。底层以Linux为操作系统内核,提供进程管理、存储管理等基本功能[6]。其他各公司自行开发市场需求的应用软件,部分程序以java编写。为了使这项技术得到推广,2007年11月,Google正式发布Android操作系统并联合34家厂商成立了“开放手机联盟”[7]。Android在未公布之前常被传闻为谷歌电话。业内大多数认为Google开发的是自有手机品牌产品,而不是一套开源的软件平台。到了2010年1月,Google才发表了自有手机品牌电话Nexus One。2011年10月,Android市场占有率超过48%,成为全球最受欢迎、用户交互体验较好、占有率最高的智能手机平台。Android手机软件平台为AndroidMarket,为用户提供下载和安装支持Android的第三方软件[8]。截止到2010年4月15日,AndroidMarket已经有3.8万多个应用程序[9]。现在这个移动互联网时代,Android系统在智能手机和平板电脑市场均处于霸主地位。采用Android系统主要厂商包括HTC、SAMSUNG、LG、魅族、华为、中兴、联想、小米等。目前最新SDK版本为Android 4.2.2。

2.1.2 Android的基本框架

Android的基本框架由五个部分组成,应用层、应用框架层、类库、Android运行时环境和Linux内核。我们程序开发人员只可以访问应用层和应用框架层,使用开发所需Library库。下图就是Android基本框架图(图2-1):

图2-1 Android基本框架

(1) Applications

Application Android会与一个核心应用的程序包一起发布,此应用程序包会包括SMS短消息程序,email客户端,地图,浏览器,联系人管理,日历程序等[10]。使用JAVA语言编写的核心应用程序[11]。

(2) Application FrameWork

允许开发人员完全访问核心应用程序所使用的API框架[12]。此应用程序架构用来简化组件的重用;在遵循系统安全性的要求下任何应用程序都可以发布和使用的它的功能块。此应用程序的重用机制使得组建可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括:可扩展的视图(Views )、内容管理器(Content Providers )、资源管理器(Resource Manager)、通知管理器(Notification Manager)、活动类管理器(Activity Manager)。

(3) Libraries库

Android 包含了一套C/C++ 函数库[13]。该库通过 Android 的Application

FrameWork为开发人员提供所需的底层服务。以下是一些核心Libraries库:系统 C库-就是系统C函数库(libc),为基于embedded linux的设备专门定制,也是从BSD继承而来的。媒体库- 基于 PacketVideoOpenCore,这个库支持录和放,可以录制大多数比较流行的音频与视频格式,还有静态映像文件包括MP3, MPEG4, AAC, H.264,

AMR, JPG, PNG。Surface Manager – 管理所显示子系统,并且为多个应用程序提供2D

图层和3D图层的无缝融合。LibWebCore - 一个最新用来支持Android浏览器和一个可嵌入web视图的web浏览器引擎。SGL - 一个内置的支持2D图形的引擎。3D libraries

- 该库可以使用高度优化的3D软加速或者使用硬件3D加速。FreeType – 位图和矢量字体显示[14]。SQLite – 功能强劲的安卓用轻量级关系型数据库,所有应用程序均可使用。

(4) Android Runtime

Android 包括了一个核心的Library,该库提供了编程中Java所封装的大多数类和方法。每一个Android应用程序都在它自己独立的线程中运行,都拥有一个相对独立的Dalvik虚拟机实例[15]。Dalvik是同时针对于多个高效运行的VMs来实现的。Dalvik虚拟机执行.dex的可执行文件,这一格式文件对最小内存的使用做出了较好的优化。该Dalvik虚拟机是基于寄存器的,所有的类都需要经过JAVA编译,然后通过Android

SDK中的dx工具转化成.dex格式再由虚拟机执行。

(5) Linux内核

Android 的核心系统服务依赖于 Linux 2.6内核,如安全性,网络协议栈,内存管理,驱动模型和进程管理[16]。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。同所有Linux内核一样,Android内核是介于硬件层和软件组之间的一个抽象层次[17]。

2.2 Android开发环境的搭建

在软件开发中,大部分的软件都需要配置开发环境才能够使用,Android开发也不例外。下面介绍Android的开发环境配置:

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

1.操作系统:Windows XP或Linux

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

环境:IDE Eclipse +ADT Eclipse

:Java Runtime Environment、Java Development kit[19]

安装步骤如下:

第一步:安装Java虚拟机sun-java6-jdk版本,正常安装即可,完成后需要配置环境变量。

第二步:安装Eclipse工具 官网/downloads/

选择版本(图2-2):进行安装

图2-2 Eclipse安装包下载

第三步:安装安卓的SDK包:首先在安卓开发者的官网下载SDK,具体下载地如下/sdk ,选择自己的系统进行下载安装

图2-3 SDK包下载界面

第四步:安装Android ADT插件

打开Eclipse,点击help,然后点击install new software ,再点击add,然后会弹出一个框如下图所示(图2-4)

图2-4 ADT插件安装界面

选择浏览你下载的ADT插件的包,点击OK按钮,选择需要安装的包,占击next按钮,然后选择接受协议,等到安装成功以后重启Eclipse工具,再设置Android SDK

环境,点击Window然后Preferences,再选择点击Android,如下所示(图2-5)

图2-5 配置开发环境

在SDK location中输入SDK Tools路径:E:android_sdk点击OK

这样Android环境就已经搭建成功了。

2.3 Android系统的四大组件

在Android系统中,提供了四大基本组件,每个组件都是一个视图,分为可见和不可见视图,我们常见的Activity,ContentProvider在应用程序中是能用肉眼看见的,而Service和BroadcastReceiver通常则是在后台运行的。下面来详细介绍下四大组件:

(1)Activity 简介

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

(2)Service 简介

Service其实就是在后台运行的一种服务程序,用户一般不需要与其接触,所以这样的一个Service类其实是比较简单的,我们自己所写的service方法只要继承Service类,实现所需要的方法就可以了。写好的Service需要在文件中注册,就是通过声明才能使用。Service有自己的生命周期,我们可

以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service。

(3)Broadcast Receiver 简介

Broadcast Receiver 字面是广播接收器的意思,它类似于事件处理机制,不过事件处理机制是程序组件级别的,而广播事件处理机制是系统级别的。我们可以使用Intent来启动一个程序组件,还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。

(4)ContentProvider简介

Content Provider 的应用使应用程序之间相互访问数据成为可能,目前它被用来保存和检索数据,也成为了Android系统提供的第三方应用数据的访问方案。它是跨应用程序共享数据的唯一方法。Android 系统为常用的音视频、图片和文件等提供了大量的Content Provider。它们在包的er下面。当我们有适当的权限的时候,通过这些定义好的ContentProvider 可以极其方便的进行数据操作。我们也可以自己来制定ContentProvider用来共享我们的数据,以方便用户的访问。

2.4 Android音乐播放器工程

2.4.1 Android项目

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

Android的五大布局方式:LinearLayout(线性布局)、 FrameLayout(帧布局)、

TableLayout(表格布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)。这五种布局方式一般都是需要相互嵌套使用的,各种漂亮的Android界面就是通过嵌套布局才能够实现的,但是这一般都需要一定的Android布局功底。

Android的线程,以及线程之间通信的中介:Handler类。

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

图2-6 音乐播放界面

2.4.2 Android工程文件结构

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

图2-7 资源类型分布图

下图2-8 -图2-12为音乐播放器的工程结构、源码结构和资源文件等,图2-8为一个Android工程的整体工程结构,图2-9为该播放器的代码源文件,图2-10为播放器所用到的字符串的xml配置文件,图2-11为 该播放器的各种界面的布局配置文件,图2-12为该播放器的图片资源。

图2-8~图2-12 音乐播放器工程分析图

2.4.3 文件

文件用来启动所有的Android应用程序,当我们一个新建的工程,都会自动生成一个名叫的文件,这一配置文件是整个程序能够正常运行的核心,其重要性不言而喻,它里面明确声明了Android SDK的最低需求版本minSdkVersion,程序运行时使用的Activity都需要在这里注册声明,当程序中任何一个操作触发事件后,系统都会自动的去中寻找对应的标识来启动相应的操作。任何一个文件的格式都应为:

Android系统默认支持的编码方式是"utf-8",当程序显示出现乱码时,我们必须将其编码方式转化为"utf-8".在 中会在第一行声明一句:

version="1.0" encoding="utf-8"?>。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自:

xmlns:android="/apk/res/android"。

xmlns(XML namespace)是一个命名空间,它就如同一个引导者,带领我们找到系统框架,然后找到这个架构,每一个配置文件必须要由xmlns引导,否则我们想引用的资源就会无法使用。在application元素我们定义android:icon="@drawable/music"和

android:label="@string/app_name",icon是程序安装后在手机中显示的图标,我们运用@drawable/music表示了对res/drawable目录下的的引用。@string/app_name表示了对res/value目录下中定义的app_name对应值的引用,在定义键值对的方式易于以后的修改。

android:label="@string/app_name"

android:name="tivity" >

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

在intent-filter选项中,有action和category属性,按照要求action的值为,category的值为ER,它们是系统的值,程序启动的时候解析到这些常用值就可以确定首先要启动的Activity。

在中有一个根结点,它是我们需要定义的ADT版本,例如我们将其值设定为android:minSdkVersion="10",则表示此Android工程所用的版本为2.3.3,Android还有1.6、2.1、2.2、4.0、4.1这几个版本。

如果我们需要对音频文件进行刻录,那我们就需要设置音频刻录权限,我们就需

要将其的值设置为android:name="_AUDIO,我们就可以进行音频刻录了。当然uses-permission还有别的权限,例如GPS定位权限,网络访问权限,后台执行权限等等。

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

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

(1) 显示方式

显示方式是在代码中的直接设置需要启动组件,在ss(组件1,组件2)中确定从这个组件跳转到另一个组件,然后调用startIntent(intent)来启动指定的组件2。

(2) 隐式方式

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

第3章

3.1 系统功能需求

系统需求分析

根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成两部分来概括,即播放器的基本控制需要和播放友好性需求。以下分别描述:

3.1.1 播放器基本控制需求

图3-1 播放器基本控制需求

表3-1 播放用例

用例名称:播放

参与者:用户

目标:用户点击播放音乐列表中的歌曲

前置条件:播放器正在运行

基本事件流:1.用户单击列表中歌曲

2.播放器将播放列表中的点击的歌曲

表3-2 暂停用例

用例名称:暂停

参与者:用户

目标:使得用户可以暂停正在播放的歌曲

前置条件:歌曲正在播放且未停止和暂停

基本事件流:1.用户单击“暂停”按钮

2.播放器将暂停当前的歌曲

表3-3 初曲/终曲用例

用例名称:初曲/终曲

参与者:用户

目标:使得用户可以返回音乐列表初曲或终曲

前置条件:歌曲正在播放或暂停

基本事件流:1.用户单击“初曲或终曲”按钮

2.播放器将播放音乐列表中初一曲或终一曲

表3-4 上一首/下一首用例

用例名称:上一首/下一首

参与者:用户

目标:使得用户可以点播上一首或下一首音乐

前置条件:歌曲正在播放或歌曲暂停中

基本事件流:1.用户单击“上一首或下一首”按钮

2.播放器将播放上一首歌曲或下一首歌曲

表3-5 音乐列表用例

用例名称:音乐列表

参与者:用户

目标:使得用户可以进入音乐列表

前置条件:程序在运行

基本事件流:1.用户单击“音乐”分区

2.播放器进入音乐列表

3.1.2 播放友好性需求

图3-2播放模式设定

表3-6 播放模式用例

用例名称:播放模式

参与者:用户

目标:使得程序在播放面板设定播放状态

前置条件:程序运行在播放器音乐播放界面中

基本事件流:1.用户单击“顺序、单曲、随机”按钮

2.播放器进入选中模式播放状态

表3-7 歌词显示用例

用例名称:歌词显示

参与者:用户

目标:使得程序自动读取与歌曲名称相同的歌词

前置条件:程序运行在音乐播放界面

基本事件流:1.程序自动后台扫描歌词文件

3.2 系统结构图和流程图

(1)音乐播放器的系统流程图(图3-3)

图3-3 播放器系统流程图

(2)系统功能结构图(图3-4)和系统功能表(表3-8)

图3-4 系统功能结构图

表3-8 软件功能表

功能类别

音乐列表

子功能

播放列表

菜单

音乐列表

子功能

退出播放

关于

点击播放->进入播放界面

退出、关于

退出、关于

退出、关于

播放歌曲->线程启动->时间更新

暂停歌曲->线程暂停->时间暂停

寻找音乐列表第一首歌曲

寻找音乐列表最后一首歌曲

寻找当前播放的上一ID歌曲

寻找当前播放下一ID歌曲

程序退出

版权信息

艺术家

专辑

最近播放

播放界面

主菜单

菜单

菜单

菜单

播放

暂停

初曲

终曲

上一首

下一首

退出程序

关于

3.3 系统其他需求

3.3.1 音乐模块需求

在音乐模块中我们需要获取歌曲的名称和音乐的时间长度,获取完成后列表排列。

表3-9 音乐列表用例

用例名称:音乐列表

参与者:用户

目标:使得音乐列表显示歌曲名称,右边显示时间长度

前置条件:播放器在主界面

基本事件流:1.用户单击主界面上音乐模块

2.音乐列表显示以音乐排列的列表

3.3.2 艺术家模块需求

在艺术家模块中我们需要获取歌曲的名称、艺术家的名字和音乐的时间长度,获取完成后列表排列。

表3-10 艺术家列表用例

用例名称:艺术家

参与者:用户

目标:使得艺术家列表显示艺术家名称,下面一行是歌曲名称

前置条件:播放器在主界面

基本事件流:1.用户单击主界面上艺术家模块

2.艺术家列表显示以艺术家排列的列表

3.3.3 专辑模块需求

在专辑模块中我们需要获取歌曲的名称、歌曲所属的专辑和音乐的时间长度,获取完成后列表排列。

表3-11 专辑列表用例

用例名称:专辑

参与者:用户

目标:使得专辑列表显示歌曲所属专辑名称,下面一行是专辑名称

前置条件:播放器在主界面

基本事件流:1.用户单击专辑模块

2.专辑列表显示以专辑名称排列的列表

3.3.4 最近播放模块需求

在最近播放模块中我们需要按照由近到远的播放顺序将音乐列表排列,只需要获取歌曲的名称即可。

表3-12 最近播放用例

用例名称:最近播放

参与者:用户

目标:显示用户最近播放歌曲

前置条件:播放器在主界面

基本事件流:1.用户单击最近播放模块

2.最近播放模块列表显示按时间前后播放完的歌曲

3.3.5 系统性能需求

Android系统要求无响应时间为5秒,所以歌曲播放、暂停、上一曲/下一曲、初曲/终曲、进入播放器程序、进入音乐列表等等操作的系统响应时间最长均不能超过5秒。

3.3.6 运行环境需求

操作系统:Android手机基于Linux操作系统

Android系统要求无响应时间为5秒,所以歌曲播放、暂停、上一曲/下一曲、初曲/终曲、进入播放器程序、进入音乐列表等等操作的系统响应时间最长均不能超过5秒。

支持环境:Android 2.3.3 – 4.2版本

第4章

4.1 播放器界面的设计

详细设计及功能实现

播放器的界面设计包括音乐播放界面、播放器主界面和播放器菜单托盘。

音乐播放界面实现了声音进度条控制,歌曲信息获取,上一曲/下一曲,初曲/终曲,播放,暂停,单曲循环,顺序播放,随机播放,歌曲播放进度控制,播放进度时间获取。音乐播放界面整体是一个线性布局,里面是个大的相对布局,相对布局内部分布着三个线性布局依次排列。其中第一个线性布局获取显示歌曲信息、歌手信息,实现音量控制、播放模式选择;第二个线性布局实现歌词滚动播放;第三个线性布局实现播放器的基本功能、播放进度控制和播放进度时间的获取。其中播放按钮、暂停、上一曲、下一曲、播放模式、声音控制等功能在MusicActivity中实现,在按下和得到焦点的时候会做相应的改变。音乐播放界面的 (包括各种控制按钮) 布局代码具体见文件中,播放界面如下图所示(图4-1)。

图4-1 音乐播放界面

播放器主界面包括四个部分,由五个activity组成:MainActivity、ListActivity、ArtistsActivity、AlbumsActivity、SongsActivity。在中布局,通过

MainActivity搭建好主界面框架,其它四个activity完成具体页面。由于本播放器页面布局是仿Android原生播放器布局,主界面的四个模块分别为音乐、艺术家、专辑、最进播放。音乐模块获取音乐名称以及音乐持续时间列表排列;艺术家模块获取歌手、音乐名以及音乐持续时间列表排列;专辑模块获取专辑名、音乐名以及音乐持续时间列表排列;最近播放模块获取音乐名称以及音乐持续时间并且按照最近播放顺序列表排列。播放器主界面如下图所示(图4-2)。

图4-2 播放器主界面

播放器菜单托盘的设计使用onCreateOptionsMenu方法和onOptionsItemSelected方法,实现了播放器系统退出和软件版本信息查看。

4.2 播放动画的设计

在resanim文件夹中专门放置动画文件,alpha_文件在播放器音乐播放界面的歌词动态播放中使用。其调用动画关键代码为:

xmlns:android="/apk/res/android"

android:interpolator="@android:anim/accelerate_interpolator"

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:startOffset="700"

android:duration="1000">

歌词动态显示时,随着歌曲播放进度歌词播放完毕后向上跳动一格变小,正在播放的歌词字体变最大且颜色呈黄色。效果如下图所示(图4-3):

图4-3 播放器主界面

4.3 各模块详细设计

音乐播放器包括音乐播放模块(上/下一曲,初曲/终曲,播放,暂停,声音控制),音乐列表,专辑,歌手,系统菜单等几个模块。

4.3.1 声音控制模块

声音有两个按钮控制,一个增加声音和一个减少声音。通过这两个按钮用户可以调节播放音乐的声音大小,使用AudioManager组件对声音的大小进行增减,本设计创新使用进度条的方式同步调节音量,与两个声音按钮同时有效。当用户滑动声音进度条时,若是向前,对声音进行增加;若是向后滑动,对声音进行同步减小。效果如图所示(图4-4):

图4-4 声音控制图

关键处理逻辑如下:

audioManager = (AudioManager) getSystemService(

_SERVICE);//获取系统service服务

maxVolume = eamMaxVolume(AudioManager.

STREAM_MUSIC);// 获得最大音量

currentVolume = eamVolume(AudioManager.

STREAM_MUSIC);// 获得当前音量

(maxVolume);

gress(currentVolume);

eekBarChangeListener(new OnSeekBarChangeListener() {

public void onStopTrackingTouch(SeekBar seekBar) {}

public void onStartTrackingTouch(SeekBar seekBar) {}

//让音量随着焦点的变化增大减小

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser){

eamVolume(_MUSIC,

progress, _ALLOW_RINGER_MODES);

}

}

4.3.2 播放暂停模块

音乐播放界面能看到播放按钮,当点击播放按钮音乐播放,点击暂停按钮音乐暂停播放。当点击事件发生时,触发监听器执行处理操作,从而控制当前音乐的播放暂停,其界面图如图4-1所示,关键处理机制如下所示:

//正在播放,点击暂停以后暂停播放

if (isPlaying == true) {

Intent intent = new Intent(,

);

ra("play", "pause");

startService(intent);

isPlaying = false;//播放状态改变为暂停

geResource(1);

}

replaying=false;

//音乐暂停播放中,点击以后继续播放

If( isPlaging == false ){

}

Intent intent = new Intent(,

);

ra("play", "playing");

ra("id", id);

startService(intent);//启动运行的服务

isPlaying = true;//播放状态改变为播放

geResource(1);

replaying=true;

4.3.3 上一曲下一曲模块

当用户点击上一曲下一曲按钮时,监听器执行触发的事件,内部循环算法进行处理,从而播放上一曲下一曲,其界面图如图4-1所示,关键处理逻辑如下所示:

// 上一首的逻辑处理

//当前播放id-1播放

int id=MusicService._id-1;

//id比0大的时候id-1即可

if(id>=()-1){

id=()-1;

//其它,id置0

}else if(id<=0){

}

// 下一首的逻辑处理

//当前播放id+1播放

int id=MusicService._id+1;

if(id>=()-1){

id=()-1;

id=0;

}else if(id<=0){

id=0;

}

4.3.4 初曲终曲模块

当用户点击初曲终曲按钮时,播放器就对当前播放事件监听,从音乐列表中转换音乐,从而控制当前音乐的初曲终曲,其界面图如图4-1所示,关键处理逻辑如下所示:

if (v == imageBtnLast) {

}

// 播放第一首

id = 0;

Music m = (0);

//新建这个服务的意图

Intent intent = new Intent(,);

ra("play", "first");

ra("id", id);

//传递意图以后,启动service

startService(intent);

//改变播放状态,跳到第一首歌曲

isPlaying = true;

// 播放最后一首

int id=()-1;

Music m = (id);

Intent intent = new Intent(,);

//intent中添加信息

ra("play", "last");

ra("id", id);

//传递到service以后执行

startService(intent);

//改变状态

isPlaying = true;

} else if (v == imageBtnNext) {

4.3.5 音乐列表模块

音乐播放列表由activity组件来实现,能够对手机sd卡中MP3音乐文件进行读取和显示,在文件中对音乐的音乐名及音乐持续时间进行获取并且进行列表。用户可以选择想要播放的音乐对其播放,点击音乐以后则跳转启用播放音乐的MusicActivity。

其关键获取过程如下:

//音乐名获取

TextView textMusicName=(TextView) convertView.

findViewById(_item_name);

t(e());

//持续时间获取

TextView textMusicTime=(TextView) convertView.

findViewById(_item_time);

t(toTime((int)e()));

音乐列表截图如下(图4-5):

图4-5音乐播放器列表

4.3.6 艺术家模块

在播放器主界面点击艺术家图片按钮启动ArtistsActivity。在文件中歌曲中的歌手名、歌曲名及音乐持续时间进行获取并且列表显示。艺术家模块包括歌手名、歌曲名以及歌曲时间。用户可以单击想要播放的音乐对其播放,跳转方式同音乐模块。关键代码如下:

//歌手名获取

TextView textMusicSinger=(TextView) convertView.

findViewById(_item_singer);

t(ger());

//音乐名获取

TextView textMusicName=(TextView) convertView.

findViewById(_item_name);

t(e());

//音乐持续时间获取

TextView textMusicTime=(TextView) convertView.

findViewById(_item_time);

t(toTime((int)e()));

艺术家列表如下图所示(图4-6):

图4-6艺术家列表

4.3.7 专辑模块

在播放器主界面点击专辑图片按钮启动AlbumsActivity。在文件中歌曲中的歌曲名、专辑名及音乐持续时间进行获取并且列表显示专辑模块包括歌曲名、专辑名以及歌曲时间。用户可以单击想要播放的音乐对其播放。关键获取机制如下所示:

//专辑名称获取

TextView textMusicAlbums=(TextView) convertView.

findViewById(_item_singer);

t(um());

//音乐名获取

TextView textMusicName=(TextView) convertView.

findViewById(_item_name);

t(e());

//音乐持续时间获取

TextView textMusicTime=(TextView) convertView.

findViewById(_item_time);

t(toTime((int)e()));

专辑列表界面如下图所示(图4-7):

图4-7专辑列表

4.3.8 最近播放模块

存储最近音乐播放情况,保存音乐播放的顺序,关键存储机制如下:

//找到layout中songListView注册的id

songListView = (ListView)ewById(ew1);

SongsAdapter adapter=new SongsAdapter(this, icData(this));

pter(adapter);

//设置监听器模式,获取点击事件。

temClickListener(new OnItemClickListener(){})

最近播放歌曲界面如下图所示(图4-8):

图4-8最近播放列表

4.3.9 系统菜单模块

系统菜单模块主要为用户提供使用软件的其他功能,包括退出和关于功能。其截图如下(图4-9):

图4-9 系统菜单模块

点击手机上的menu键,创建两个模块,如下所示:

//点击menu菜单时调用

public boolean onCreateOptionsMenu(Menu menu) {

//创建两个选项块

(0, 1, 1, );

(0, 2, 2, );

return teOptionsMenu(menu);

}

当用户点击menu菜单中退出时使用(-1),使软件系统退出。当用户点击关于时,从MainActivity跳转至AboutActivity显示版权信息,并且当前MainActivity执行finish()方法,效果截图如下图所示(图4-10):

图4-10 版权模块

当用户点击返回按钮的时候播放器返回主界面,具体原理是AboutActivity跳转至MainActivity,并且AboutActivity点击后执行finish()方法。

第5章 软件测试

5.1 软件的测试

一个程序并不可能达到十分完美,难免存在一些错误,就是我们常说的bug。如果不能及时将其找出并修改,会造成系统崩溃并造成不必要的损失。通过软件测试,尽可能多的找出系统中的错误,以便于及时修改。

5.1.1 软件的测试环境

1、软件测试的性能要求

软硬件要求:系统环境 win7;硬件系统环境core i3、3G内存、500G硬盘。此外对其他软件几乎没有依赖性,程序健壮性较好。

2、测试

建立一张模拟的SD卡,上传歌曲文件;分别测试播放器的上/下一首、播放、暂停、初曲/终曲等功能用户体验是否良好。

3、软件测试的评价

软件功能评价:此音乐播放器软件各模块用户体验良好,基本符合设计要求。

结论:此软件的设计和论证是可行的。

5.1.2 测试阶段

软件测试工程量大、过程复杂,在整个软件开发周期中占据着举足轻重的地位,需求调研和软件测试占据了软件开发三分之二时间。对于软件测试我们需要从不同的角度考虑,明确测试的目的,精细化测试的过程,对测试过程进行明确的分类,制定好测试计划,尽量做到细致以及全面的测试。按照软件测试的策略和过程分类,软件测试可分为单元测试、集成测试、确认测试、系统测试和验收测试[21]。它们被依次顺序地执行。

实验主要是进行功能测试,查看弹出报错的信息,在测试中主要出现的错误是“has

stopped unexpectedly”如下图所示

图5-1异常终止

大多数时间出现如上所示的情况,这时我们需要使用LogCat查看错误,课设中曾经常出现的是内存空间已满,出现运行时异常,需要释放进程空间,以导致出现程序运行时出现图5-1所示的现象,所以,当出现错误时,我们必须查看错在哪儿,然后改正。

图5-2调试截图

5.2 测试结果

在课题后期进行了大力度的软件测试,按照测试的流程和规则,主要进行了功能测试。软件主要的bug表现为闪退、卡死等现象,在编辑器上观看log则能发现主要问题是运行时异常。我们主要对bug采取了异常拦截的方式进行调试完善,测试完成后软件稳定运行。

结论

本文主要是对Android平台音乐播放器的分析设计,主要实现了音乐的播放、暂停、上一曲、下一曲、音乐列表、声音控制、退出菜单、播放模式等功能。在本文中第一章简要的介绍了选题依据背景、研究现状等;第二章中讲述了Android的开发基础;第三章进行了详尽的系统需求分析;第四章进行详细设计以及编码实现工作;最后的第五章进行了软件的测试工作,完善软件。本设计的音乐播放器软件能够稳定运行,体积小且反映灵敏,但还是有几点不足的地方,例如最近播放列表无法排序、代码编写冗余重复率高、图片素材布局不太美观等等。在以后我会改进软件的不足,以更优的编码水平,更高超的布局思维模型,并且学习更多新的知识重构这款软件。这款播放器软件还是比较好的,适用于低端智能手机市场,有良好的用户体验和反应速度。相信随着智能手机在发展中国家的普及,它们市场上会拥有庞大的用户群。

参考文献

[1] Yong-Cai P,Wen-chao L,Xiao pment and Research of Music Player

Application Based on Android[C]//Communications and Intelligence Information

Security (ICCIIS),2010 International Conference ,2010:23-25.

[2] 朱婷婷,李惠.基于Android的应用软件的综述[J].电脑与电信,2011,(01):42-43.

[3] LI Y,FENG G,LI L,et pment and Research on Multimedia Application Based

on Android [J].Computer and Modernization,2011, (04):149-150.

[4] 张正政,林耀荣.基于Android系统的影音播放器开发[J].现代电子技术,2011,34(02):5-8.

[5] 秦超,姜良君,蔡永香.基于Android的移动终端GPS测量系统的设计与开发[J].城市勘测,2011,(01):64-67.

[6] 刘昌平,范明钰,王光卫,等.Android手机的轻量级访问控制倡[J].计算机应用研究,2010,27(07):20-25.

[7] 刘仙艳.移动终端开放平台—Android[J].信息通信技术,2011,(04):40-50.

[8] 党李成.基于Google Android智能手机平台的研究与应用[D].安徽大学计算机科学与技术学院,2010:9-12.

[9] 贾理华,乐燕芬,施伟斌.基于Android平台简易即时通讯的研究与设计[J].常州工学院学报,2010,(04):9-12.

[10] 农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.

[11] 赵世彧,张盛,王玉辉,等.智能手机操作系统及其GoogleAndroid上的软件开 发[J].煤炭技术,2011,30(04):197-198.

[12] 宋杰,党李成,郭振朝,等.Android OS手机平台的安全机制分析和应用研究[J].计算机技术与发展,2010,20(06):152-155.

[13] 耿东久,索岳,陈渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,31(02):559-561.

[14] 刘敏.移动终端的Android移植与应用程序设计[D].西安:西安电子科技大学,2011:14-19.

[15] 李金霖,赖超,龙曦,等.基于Android平台的手机日程管理系统[J].计算机与数字工程,2011,39(03):65-68.

[16] 杜铭,范辉.基于Android的点餐系统的研究与实现[J].无线互联科技,2012,(01):84-86.

[17] 陈璟,陈平华,李文亮.Android内核分析[J].现代计算机:下半月版,2009,(11):112-115.

[18] Silva Android Games[M].Mario Zechner:Apress,2012:5-10.

[19] Jerome D d:A Programmer’s Guide[J].Milan

Seoul:Singapore,2008,(03):55-68.

[20] 叶晓静,黄俊伟.基于Android系统的多媒体播放器解决方案[J].现代电子技术,2011,34(24):73-76.

[21] 李蓉.针对嵌入式系统安全核的测试技术研究与实现[D].电子科技大学,15-18.

2005:

致谢

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

在开发过程中我学到了一些经验:系统需求分析的是否合理将决定着的系统开发成功与否,一份合理的需求分析将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码就会心底有数,有条不紊。当然也有些还需要继续深入地方如:最近播放存储不上、图片素材布局不太美观的问题等等。

2024年2月22日发(作者:捷鸿德)

基于android的音乐播放器的设计

摘 要

当今社会发展越来越快,人们对手机软件设备的用户体验要求越来越高,本文主要是对Android系统上对音乐播放器应用程序的设计与实现进行讨论,通过这一过程的设计和论证对手机平台播放器以后的研发有很大意义。本文的音乐播放器使用开源的Android平台,使用Java语言和开发工具Eclipse对音乐播放器代码进行编写。通过设计能够实现音乐的播放、暂停、上一曲、下一曲、音乐列表、声音控制、退出菜单、播放模式等功能,通过对基于Android平台下的播放器的设计,了解音乐播放器的设计原理和实现的相关技术,掌握Android编程思想以及基本的应用组件,对以后从事Android开发有很大的帮助。研究表明,基于Android平台的应用软件开发快捷简单,用户体验良好,必将成为未来移动互联网时代的风向标。

关键词:安卓;音乐播放器;应用程序

Abstract

Today’s society is developing faster and faster, people software for mobile devices are

increasingly demanding the user experience, this article is mainly on music player applications on the

Android system design and implementation are discussed, through the design and demonstration of

this process on the mobile platform player development has great significance in the future. This

music player uses the open source Android platform using the Java language and the Eclipse tools for

writing music player code. The design can realize the music play, pause, a song, the next song, music,

sound control, exit the menu, playback and other functions, on the basis of design under the platform

of Android player based on the design principle, understand the music player and related technology,

master Android programming ideas and the application of the basic components, after the Android

engaged in the development of great help in the future. Research shows that based on the Android

platform application development quick and easy, the user experience is good, will become the future

mobile Internet era of the citizenry.

Key words: Android;music player;application

目 录

摘 要 ......................................................................................................................................... I

Abstract ..................................................................................................................................... II

第1章 绪论 ............................................................................................................................ 1

1.1 选题依据、研究的目的及意义 ................................................................................. 1

1.2 国内外的研究现状 ..................................................................................................... 1

第2章 Android开发基础 .................................................................................................... 3

2.1 什么是Android ........................................................................................................... 3

2.1.1 Android简介 ...................................................................................................... 3

2.1.2 Android的基本框架 .......................................................................................... 3

2.2 Android开发环境的搭建 ........................................................................................... 5

2.3 Android系统的四大组件 ........................................................................................... 7

2.4 Android音乐播放器工程 ........................................................................................... 8

2.4.1 Android项目 ...................................................................................................... 8

2.4.2 Android工程文件结构 ...................................................................................... 9

2.4.3 文件 .............................................................................. 10

第3章 系统需求分析 .......................................................................................................... 13

3.1 系统功能需求 ........................................................................................................... 13

3.1.1 播放器基本控制需求 ...................................................................................... 13

3.1.2 播放友好性需求 .............................................................................................. 15

3.2 系统结构图和流程图 ............................................................................................... 16

3.3 系统其他需求 ........................................................................................................... 18

3.3.1 音乐模块需求 .................................................................................................. 18

3.3.2 艺术家模块需求 .............................................................................................. 18

3.3.3 专辑模块需求 .................................................................................................. 18

3.3.4 最近播放模块需求 .......................................................................................... 19

3.3.5 系统性能需求 .................................................................................................. 19

3.3.6 运行环境需求 .................................................................................................. 19

第4章 详细设计及功能实现 .............................................................................................. 20

4.1 播放器界面的设计 ................................................................................................... 20

4.2 播放动画的设计 ....................................................................................................... 21

4.3 各模块详细设计 ....................................................................................................... 22

4.3.1 声音控制模块 .................................................................................................. 22

4.3.2 播放暂停模块 ................................................................................................. 23

4.3.3 上一曲下一曲模块 ......................................................................................... 24

4.3.4 初曲终曲模块 ................................................................................................. 25

4.3.5 音乐列表模块 .................................................................................................. 26

4.3.6 艺术家模块 ...................................................................................................... 27

4.3.7 专辑模块 .......................................................................................................... 28

4.3.8 最近播放模块 .................................................................................................. 29

4.3.9 系统菜单模块 .................................................................................................. 30

第5章 软件测试 .................................................................................................................. 32

5.1 软件的测试 ............................................................................................................... 32

5.1.1 软件的测试环境 .............................................................................................. 32

5.1.2 测试阶段 .......................................................................................................... 32

5.2 测试结果 ................................................................................................................... 34

结论 .......................................................................................................................................... 35

参考文献 .................................................................................................................................. 36

致谢 .......................................................................................................................................... 38

第1章 绪论

1.1 选题依据、研究的目的及意义

Android播放器是近几年来智能手机当中比较流行的音乐播放软件。利用以前学习过的各种编程知识来设计和开发一款基于Android平台的音乐播放器,还能深入学习Android的程序框架结构,从而进一步学习Android的基础知识和理论,了解手机软件的开发流程,掌握Android应用程序的开发技巧,充实自己的世界观价值观。Android平台是一个完全开放的手机平台,智能手机中的各种应用软件也越来越完备。智能手机操作系统的研究和它的发展已成为当前最活跃的领域[1]。在Android平台设计和开发一款音乐播放器可以摆脱不能随意安装在非智能手机的因素,并且具有很广阔的应用前景。当前音乐播放器由于手机内存和cpu处理能力的限制,在音乐播放、收集、推荐、操作和管理存在技术瓶颈,下一代音乐播放器应该使用云空间,记录用户的使用习惯,将音乐的播放,搜索等功能全部交给云端来处理,这样网络为用户提供互联网资源更庞大,还可以定制服务,管理也更加简单。而近年来出现用户体验良好的Android智能手机系统恰好能作为下一代播放器平台。只有音乐播放器客户端软件的不断创新发展,未来人们欣赏音乐的用户体验才会更好。所以开发一款好的音乐播放器在现在和未来都具很大的实用价值。

1.2 国内外的研究现状

随着科技的快速发展,数码电子设备基本上都含有MP3播放的功能。媒体播放器的发展有两个趋势。首先,支持多样化格式,如常见的音频格式WMA格式、MP3格式、MIDI格式等。这些格式如何能够完美的播放,是现如今研究的一个主流方向。其次一个必要的趋势就是播放器的可扩展性,现如今音乐播放器的功能越来越多,用户体验越来越好,如何能让播放器的功能比现有的更加完备,也是占领用户群的一个因素。由于Android基于Linux内核且具有开源、免费的特性,为播放性能的提升提供了更加便利的条件[2]。Android平台的开放性,可以不仅推动了技术创新(包括平台本身),也有利于降低开发成本,让制造商定制的特点产品很容易。因此,它有一个大的市场潜力[3]。

目前Android开发在国内外主要都是开发应用,分成3类:为大客户开发App、开发通用App(放到安卓市场或者其他App市场下载销售)以及游戏开发(同样放到安卓

市场或者其他App市场销售,目前从事游戏开发的人员也是占比例最大的)。第一类开发者一般是比较专业的大公司,这些公司主要为大客户设计定制App以及提供其所需要的总体解决方案。他们除了会根据需求对系统进行定制外,更多的工作在于为这些系统编写定制的应用。第二类开发者,一般是创业型公司或者是个人开发者,他们的盈利方式一般是2种:为国外客户做外包软件开发或者通过Google的移动广告(AdMob),用户点击广告分成。而在理论上的通过付费下载的方式来盈利的,现在国内少有成功者。第三类开发者目前和第二类开发者类似。

第2章 Android开发基础

2.1 什么是Android

2.1.1 Android简介

Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称[4]。该平台由中间件、操作系统、应用软件和用户界面组成,是首个为移动终端打造的真正开放和完整的软件平台和操作系统[5]。目前最新Android系统版本为Android 4.1,有代表性的手机是三星的galaxy noteⅡ。

Android是基于Linux内核的软件平台和操作系统,早期由谷歌公司研发(在华注册商标名为“安致”),后由开放手机联盟(Open Handset Alliance)开发。Android采用了软件堆层的架构,由三个部分组成。底层以Linux为操作系统内核,提供进程管理、存储管理等基本功能[6]。其他各公司自行开发市场需求的应用软件,部分程序以java编写。为了使这项技术得到推广,2007年11月,Google正式发布Android操作系统并联合34家厂商成立了“开放手机联盟”[7]。Android在未公布之前常被传闻为谷歌电话。业内大多数认为Google开发的是自有手机品牌产品,而不是一套开源的软件平台。到了2010年1月,Google才发表了自有手机品牌电话Nexus One。2011年10月,Android市场占有率超过48%,成为全球最受欢迎、用户交互体验较好、占有率最高的智能手机平台。Android手机软件平台为AndroidMarket,为用户提供下载和安装支持Android的第三方软件[8]。截止到2010年4月15日,AndroidMarket已经有3.8万多个应用程序[9]。现在这个移动互联网时代,Android系统在智能手机和平板电脑市场均处于霸主地位。采用Android系统主要厂商包括HTC、SAMSUNG、LG、魅族、华为、中兴、联想、小米等。目前最新SDK版本为Android 4.2.2。

2.1.2 Android的基本框架

Android的基本框架由五个部分组成,应用层、应用框架层、类库、Android运行时环境和Linux内核。我们程序开发人员只可以访问应用层和应用框架层,使用开发所需Library库。下图就是Android基本框架图(图2-1):

图2-1 Android基本框架

(1) Applications

Application Android会与一个核心应用的程序包一起发布,此应用程序包会包括SMS短消息程序,email客户端,地图,浏览器,联系人管理,日历程序等[10]。使用JAVA语言编写的核心应用程序[11]。

(2) Application FrameWork

允许开发人员完全访问核心应用程序所使用的API框架[12]。此应用程序架构用来简化组件的重用;在遵循系统安全性的要求下任何应用程序都可以发布和使用的它的功能块。此应用程序的重用机制使得组建可以被用户替换。所有的应用程序都由一系列的服务和系统组成,包括:可扩展的视图(Views )、内容管理器(Content Providers )、资源管理器(Resource Manager)、通知管理器(Notification Manager)、活动类管理器(Activity Manager)。

(3) Libraries库

Android 包含了一套C/C++ 函数库[13]。该库通过 Android 的Application

FrameWork为开发人员提供所需的底层服务。以下是一些核心Libraries库:系统 C库-就是系统C函数库(libc),为基于embedded linux的设备专门定制,也是从BSD继承而来的。媒体库- 基于 PacketVideoOpenCore,这个库支持录和放,可以录制大多数比较流行的音频与视频格式,还有静态映像文件包括MP3, MPEG4, AAC, H.264,

AMR, JPG, PNG。Surface Manager – 管理所显示子系统,并且为多个应用程序提供2D

图层和3D图层的无缝融合。LibWebCore - 一个最新用来支持Android浏览器和一个可嵌入web视图的web浏览器引擎。SGL - 一个内置的支持2D图形的引擎。3D libraries

- 该库可以使用高度优化的3D软加速或者使用硬件3D加速。FreeType – 位图和矢量字体显示[14]。SQLite – 功能强劲的安卓用轻量级关系型数据库,所有应用程序均可使用。

(4) Android Runtime

Android 包括了一个核心的Library,该库提供了编程中Java所封装的大多数类和方法。每一个Android应用程序都在它自己独立的线程中运行,都拥有一个相对独立的Dalvik虚拟机实例[15]。Dalvik是同时针对于多个高效运行的VMs来实现的。Dalvik虚拟机执行.dex的可执行文件,这一格式文件对最小内存的使用做出了较好的优化。该Dalvik虚拟机是基于寄存器的,所有的类都需要经过JAVA编译,然后通过Android

SDK中的dx工具转化成.dex格式再由虚拟机执行。

(5) Linux内核

Android 的核心系统服务依赖于 Linux 2.6内核,如安全性,网络协议栈,内存管理,驱动模型和进程管理[16]。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。同所有Linux内核一样,Android内核是介于硬件层和软件组之间的一个抽象层次[17]。

2.2 Android开发环境的搭建

在软件开发中,大部分的软件都需要配置开发环境才能够使用,Android开发也不例外。下面介绍Android的开发环境配置:

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

1.操作系统:Windows XP或Linux

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

环境:IDE Eclipse +ADT Eclipse

:Java Runtime Environment、Java Development kit[19]

安装步骤如下:

第一步:安装Java虚拟机sun-java6-jdk版本,正常安装即可,完成后需要配置环境变量。

第二步:安装Eclipse工具 官网/downloads/

选择版本(图2-2):进行安装

图2-2 Eclipse安装包下载

第三步:安装安卓的SDK包:首先在安卓开发者的官网下载SDK,具体下载地如下/sdk ,选择自己的系统进行下载安装

图2-3 SDK包下载界面

第四步:安装Android ADT插件

打开Eclipse,点击help,然后点击install new software ,再点击add,然后会弹出一个框如下图所示(图2-4)

图2-4 ADT插件安装界面

选择浏览你下载的ADT插件的包,点击OK按钮,选择需要安装的包,占击next按钮,然后选择接受协议,等到安装成功以后重启Eclipse工具,再设置Android SDK

环境,点击Window然后Preferences,再选择点击Android,如下所示(图2-5)

图2-5 配置开发环境

在SDK location中输入SDK Tools路径:E:android_sdk点击OK

这样Android环境就已经搭建成功了。

2.3 Android系统的四大组件

在Android系统中,提供了四大基本组件,每个组件都是一个视图,分为可见和不可见视图,我们常见的Activity,ContentProvider在应用程序中是能用肉眼看见的,而Service和BroadcastReceiver通常则是在后台运行的。下面来详细介绍下四大组件:

(1)Activity 简介

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

(2)Service 简介

Service其实就是在后台运行的一种服务程序,用户一般不需要与其接触,所以这样的一个Service类其实是比较简单的,我们自己所写的service方法只要继承Service类,实现所需要的方法就可以了。写好的Service需要在文件中注册,就是通过声明才能使用。Service有自己的生命周期,我们可

以调用startService()启动一个Service或者bindService()方法来绑定一个存在的Service。

(3)Broadcast Receiver 简介

Broadcast Receiver 字面是广播接收器的意思,它类似于事件处理机制,不过事件处理机制是程序组件级别的,而广播事件处理机制是系统级别的。我们可以使用Intent来启动一个程序组件,还可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在应用程序中实现Broadcast Receiver来监听和响应这些广播的Intent。

(4)ContentProvider简介

Content Provider 的应用使应用程序之间相互访问数据成为可能,目前它被用来保存和检索数据,也成为了Android系统提供的第三方应用数据的访问方案。它是跨应用程序共享数据的唯一方法。Android 系统为常用的音视频、图片和文件等提供了大量的Content Provider。它们在包的er下面。当我们有适当的权限的时候,通过这些定义好的ContentProvider 可以极其方便的进行数据操作。我们也可以自己来制定ContentProvider用来共享我们的数据,以方便用户的访问。

2.4 Android音乐播放器工程

2.4.1 Android项目

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

Android的五大布局方式:LinearLayout(线性布局)、 FrameLayout(帧布局)、

TableLayout(表格布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)。这五种布局方式一般都是需要相互嵌套使用的,各种漂亮的Android界面就是通过嵌套布局才能够实现的,但是这一般都需要一定的Android布局功底。

Android的线程,以及线程之间通信的中介:Handler类。

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

图2-6 音乐播放界面

2.4.2 Android工程文件结构

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

图2-7 资源类型分布图

下图2-8 -图2-12为音乐播放器的工程结构、源码结构和资源文件等,图2-8为一个Android工程的整体工程结构,图2-9为该播放器的代码源文件,图2-10为播放器所用到的字符串的xml配置文件,图2-11为 该播放器的各种界面的布局配置文件,图2-12为该播放器的图片资源。

图2-8~图2-12 音乐播放器工程分析图

2.4.3 文件

文件用来启动所有的Android应用程序,当我们一个新建的工程,都会自动生成一个名叫的文件,这一配置文件是整个程序能够正常运行的核心,其重要性不言而喻,它里面明确声明了Android SDK的最低需求版本minSdkVersion,程序运行时使用的Activity都需要在这里注册声明,当程序中任何一个操作触发事件后,系统都会自动的去中寻找对应的标识来启动相应的操作。任何一个文件的格式都应为:

Android系统默认支持的编码方式是"utf-8",当程序显示出现乱码时,我们必须将其编码方式转化为"utf-8".在 中会在第一行声明一句:

version="1.0" encoding="utf-8"?>。它是该系统支持的版本和编码。在第二行定义了我们需要使用的架构,该架构来自:

xmlns:android="/apk/res/android"。

xmlns(XML namespace)是一个命名空间,它就如同一个引导者,带领我们找到系统框架,然后找到这个架构,每一个配置文件必须要由xmlns引导,否则我们想引用的资源就会无法使用。在application元素我们定义android:icon="@drawable/music"和

android:label="@string/app_name",icon是程序安装后在手机中显示的图标,我们运用@drawable/music表示了对res/drawable目录下的的引用。@string/app_name表示了对res/value目录下中定义的app_name对应值的引用,在定义键值对的方式易于以后的修改。

android:label="@string/app_name"

android:name="tivity" >

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

在intent-filter选项中,有action和category属性,按照要求action的值为,category的值为ER,它们是系统的值,程序启动的时候解析到这些常用值就可以确定首先要启动的Activity。

在中有一个根结点,它是我们需要定义的ADT版本,例如我们将其值设定为android:minSdkVersion="10",则表示此Android工程所用的版本为2.3.3,Android还有1.6、2.1、2.2、4.0、4.1这几个版本。

如果我们需要对音频文件进行刻录,那我们就需要设置音频刻录权限,我们就需

要将其的值设置为android:name="_AUDIO,我们就可以进行音频刻录了。当然uses-permission还有别的权限,例如GPS定位权限,网络访问权限,后台执行权限等等。

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

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

(1) 显示方式

显示方式是在代码中的直接设置需要启动组件,在ss(组件1,组件2)中确定从这个组件跳转到另一个组件,然后调用startIntent(intent)来启动指定的组件2。

(2) 隐式方式

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

第3章

3.1 系统功能需求

系统需求分析

根据项目的目标,我们可获得项目系统的基本需求,以下从不同角度来描述系统的需求,并且使用用例图来描述,系统的功能需求,我们分成两部分来概括,即播放器的基本控制需要和播放友好性需求。以下分别描述:

3.1.1 播放器基本控制需求

图3-1 播放器基本控制需求

表3-1 播放用例

用例名称:播放

参与者:用户

目标:用户点击播放音乐列表中的歌曲

前置条件:播放器正在运行

基本事件流:1.用户单击列表中歌曲

2.播放器将播放列表中的点击的歌曲

表3-2 暂停用例

用例名称:暂停

参与者:用户

目标:使得用户可以暂停正在播放的歌曲

前置条件:歌曲正在播放且未停止和暂停

基本事件流:1.用户单击“暂停”按钮

2.播放器将暂停当前的歌曲

表3-3 初曲/终曲用例

用例名称:初曲/终曲

参与者:用户

目标:使得用户可以返回音乐列表初曲或终曲

前置条件:歌曲正在播放或暂停

基本事件流:1.用户单击“初曲或终曲”按钮

2.播放器将播放音乐列表中初一曲或终一曲

表3-4 上一首/下一首用例

用例名称:上一首/下一首

参与者:用户

目标:使得用户可以点播上一首或下一首音乐

前置条件:歌曲正在播放或歌曲暂停中

基本事件流:1.用户单击“上一首或下一首”按钮

2.播放器将播放上一首歌曲或下一首歌曲

表3-5 音乐列表用例

用例名称:音乐列表

参与者:用户

目标:使得用户可以进入音乐列表

前置条件:程序在运行

基本事件流:1.用户单击“音乐”分区

2.播放器进入音乐列表

3.1.2 播放友好性需求

图3-2播放模式设定

表3-6 播放模式用例

用例名称:播放模式

参与者:用户

目标:使得程序在播放面板设定播放状态

前置条件:程序运行在播放器音乐播放界面中

基本事件流:1.用户单击“顺序、单曲、随机”按钮

2.播放器进入选中模式播放状态

表3-7 歌词显示用例

用例名称:歌词显示

参与者:用户

目标:使得程序自动读取与歌曲名称相同的歌词

前置条件:程序运行在音乐播放界面

基本事件流:1.程序自动后台扫描歌词文件

3.2 系统结构图和流程图

(1)音乐播放器的系统流程图(图3-3)

图3-3 播放器系统流程图

(2)系统功能结构图(图3-4)和系统功能表(表3-8)

图3-4 系统功能结构图

表3-8 软件功能表

功能类别

音乐列表

子功能

播放列表

菜单

音乐列表

子功能

退出播放

关于

点击播放->进入播放界面

退出、关于

退出、关于

退出、关于

播放歌曲->线程启动->时间更新

暂停歌曲->线程暂停->时间暂停

寻找音乐列表第一首歌曲

寻找音乐列表最后一首歌曲

寻找当前播放的上一ID歌曲

寻找当前播放下一ID歌曲

程序退出

版权信息

艺术家

专辑

最近播放

播放界面

主菜单

菜单

菜单

菜单

播放

暂停

初曲

终曲

上一首

下一首

退出程序

关于

3.3 系统其他需求

3.3.1 音乐模块需求

在音乐模块中我们需要获取歌曲的名称和音乐的时间长度,获取完成后列表排列。

表3-9 音乐列表用例

用例名称:音乐列表

参与者:用户

目标:使得音乐列表显示歌曲名称,右边显示时间长度

前置条件:播放器在主界面

基本事件流:1.用户单击主界面上音乐模块

2.音乐列表显示以音乐排列的列表

3.3.2 艺术家模块需求

在艺术家模块中我们需要获取歌曲的名称、艺术家的名字和音乐的时间长度,获取完成后列表排列。

表3-10 艺术家列表用例

用例名称:艺术家

参与者:用户

目标:使得艺术家列表显示艺术家名称,下面一行是歌曲名称

前置条件:播放器在主界面

基本事件流:1.用户单击主界面上艺术家模块

2.艺术家列表显示以艺术家排列的列表

3.3.3 专辑模块需求

在专辑模块中我们需要获取歌曲的名称、歌曲所属的专辑和音乐的时间长度,获取完成后列表排列。

表3-11 专辑列表用例

用例名称:专辑

参与者:用户

目标:使得专辑列表显示歌曲所属专辑名称,下面一行是专辑名称

前置条件:播放器在主界面

基本事件流:1.用户单击专辑模块

2.专辑列表显示以专辑名称排列的列表

3.3.4 最近播放模块需求

在最近播放模块中我们需要按照由近到远的播放顺序将音乐列表排列,只需要获取歌曲的名称即可。

表3-12 最近播放用例

用例名称:最近播放

参与者:用户

目标:显示用户最近播放歌曲

前置条件:播放器在主界面

基本事件流:1.用户单击最近播放模块

2.最近播放模块列表显示按时间前后播放完的歌曲

3.3.5 系统性能需求

Android系统要求无响应时间为5秒,所以歌曲播放、暂停、上一曲/下一曲、初曲/终曲、进入播放器程序、进入音乐列表等等操作的系统响应时间最长均不能超过5秒。

3.3.6 运行环境需求

操作系统:Android手机基于Linux操作系统

Android系统要求无响应时间为5秒,所以歌曲播放、暂停、上一曲/下一曲、初曲/终曲、进入播放器程序、进入音乐列表等等操作的系统响应时间最长均不能超过5秒。

支持环境:Android 2.3.3 – 4.2版本

第4章

4.1 播放器界面的设计

详细设计及功能实现

播放器的界面设计包括音乐播放界面、播放器主界面和播放器菜单托盘。

音乐播放界面实现了声音进度条控制,歌曲信息获取,上一曲/下一曲,初曲/终曲,播放,暂停,单曲循环,顺序播放,随机播放,歌曲播放进度控制,播放进度时间获取。音乐播放界面整体是一个线性布局,里面是个大的相对布局,相对布局内部分布着三个线性布局依次排列。其中第一个线性布局获取显示歌曲信息、歌手信息,实现音量控制、播放模式选择;第二个线性布局实现歌词滚动播放;第三个线性布局实现播放器的基本功能、播放进度控制和播放进度时间的获取。其中播放按钮、暂停、上一曲、下一曲、播放模式、声音控制等功能在MusicActivity中实现,在按下和得到焦点的时候会做相应的改变。音乐播放界面的 (包括各种控制按钮) 布局代码具体见文件中,播放界面如下图所示(图4-1)。

图4-1 音乐播放界面

播放器主界面包括四个部分,由五个activity组成:MainActivity、ListActivity、ArtistsActivity、AlbumsActivity、SongsActivity。在中布局,通过

MainActivity搭建好主界面框架,其它四个activity完成具体页面。由于本播放器页面布局是仿Android原生播放器布局,主界面的四个模块分别为音乐、艺术家、专辑、最进播放。音乐模块获取音乐名称以及音乐持续时间列表排列;艺术家模块获取歌手、音乐名以及音乐持续时间列表排列;专辑模块获取专辑名、音乐名以及音乐持续时间列表排列;最近播放模块获取音乐名称以及音乐持续时间并且按照最近播放顺序列表排列。播放器主界面如下图所示(图4-2)。

图4-2 播放器主界面

播放器菜单托盘的设计使用onCreateOptionsMenu方法和onOptionsItemSelected方法,实现了播放器系统退出和软件版本信息查看。

4.2 播放动画的设计

在resanim文件夹中专门放置动画文件,alpha_文件在播放器音乐播放界面的歌词动态播放中使用。其调用动画关键代码为:

xmlns:android="/apk/res/android"

android:interpolator="@android:anim/accelerate_interpolator"

android:fromAlpha="0.0"

android:toAlpha="1.0"

android:startOffset="700"

android:duration="1000">

歌词动态显示时,随着歌曲播放进度歌词播放完毕后向上跳动一格变小,正在播放的歌词字体变最大且颜色呈黄色。效果如下图所示(图4-3):

图4-3 播放器主界面

4.3 各模块详细设计

音乐播放器包括音乐播放模块(上/下一曲,初曲/终曲,播放,暂停,声音控制),音乐列表,专辑,歌手,系统菜单等几个模块。

4.3.1 声音控制模块

声音有两个按钮控制,一个增加声音和一个减少声音。通过这两个按钮用户可以调节播放音乐的声音大小,使用AudioManager组件对声音的大小进行增减,本设计创新使用进度条的方式同步调节音量,与两个声音按钮同时有效。当用户滑动声音进度条时,若是向前,对声音进行增加;若是向后滑动,对声音进行同步减小。效果如图所示(图4-4):

图4-4 声音控制图

关键处理逻辑如下:

audioManager = (AudioManager) getSystemService(

_SERVICE);//获取系统service服务

maxVolume = eamMaxVolume(AudioManager.

STREAM_MUSIC);// 获得最大音量

currentVolume = eamVolume(AudioManager.

STREAM_MUSIC);// 获得当前音量

(maxVolume);

gress(currentVolume);

eekBarChangeListener(new OnSeekBarChangeListener() {

public void onStopTrackingTouch(SeekBar seekBar) {}

public void onStartTrackingTouch(SeekBar seekBar) {}

//让音量随着焦点的变化增大减小

public void onProgressChanged(SeekBar seekBar, int progress,

boolean fromUser){

eamVolume(_MUSIC,

progress, _ALLOW_RINGER_MODES);

}

}

4.3.2 播放暂停模块

音乐播放界面能看到播放按钮,当点击播放按钮音乐播放,点击暂停按钮音乐暂停播放。当点击事件发生时,触发监听器执行处理操作,从而控制当前音乐的播放暂停,其界面图如图4-1所示,关键处理机制如下所示:

//正在播放,点击暂停以后暂停播放

if (isPlaying == true) {

Intent intent = new Intent(,

);

ra("play", "pause");

startService(intent);

isPlaying = false;//播放状态改变为暂停

geResource(1);

}

replaying=false;

//音乐暂停播放中,点击以后继续播放

If( isPlaging == false ){

}

Intent intent = new Intent(,

);

ra("play", "playing");

ra("id", id);

startService(intent);//启动运行的服务

isPlaying = true;//播放状态改变为播放

geResource(1);

replaying=true;

4.3.3 上一曲下一曲模块

当用户点击上一曲下一曲按钮时,监听器执行触发的事件,内部循环算法进行处理,从而播放上一曲下一曲,其界面图如图4-1所示,关键处理逻辑如下所示:

// 上一首的逻辑处理

//当前播放id-1播放

int id=MusicService._id-1;

//id比0大的时候id-1即可

if(id>=()-1){

id=()-1;

//其它,id置0

}else if(id<=0){

}

// 下一首的逻辑处理

//当前播放id+1播放

int id=MusicService._id+1;

if(id>=()-1){

id=()-1;

id=0;

}else if(id<=0){

id=0;

}

4.3.4 初曲终曲模块

当用户点击初曲终曲按钮时,播放器就对当前播放事件监听,从音乐列表中转换音乐,从而控制当前音乐的初曲终曲,其界面图如图4-1所示,关键处理逻辑如下所示:

if (v == imageBtnLast) {

}

// 播放第一首

id = 0;

Music m = (0);

//新建这个服务的意图

Intent intent = new Intent(,);

ra("play", "first");

ra("id", id);

//传递意图以后,启动service

startService(intent);

//改变播放状态,跳到第一首歌曲

isPlaying = true;

// 播放最后一首

int id=()-1;

Music m = (id);

Intent intent = new Intent(,);

//intent中添加信息

ra("play", "last");

ra("id", id);

//传递到service以后执行

startService(intent);

//改变状态

isPlaying = true;

} else if (v == imageBtnNext) {

4.3.5 音乐列表模块

音乐播放列表由activity组件来实现,能够对手机sd卡中MP3音乐文件进行读取和显示,在文件中对音乐的音乐名及音乐持续时间进行获取并且进行列表。用户可以选择想要播放的音乐对其播放,点击音乐以后则跳转启用播放音乐的MusicActivity。

其关键获取过程如下:

//音乐名获取

TextView textMusicName=(TextView) convertView.

findViewById(_item_name);

t(e());

//持续时间获取

TextView textMusicTime=(TextView) convertView.

findViewById(_item_time);

t(toTime((int)e()));

音乐列表截图如下(图4-5):

图4-5音乐播放器列表

4.3.6 艺术家模块

在播放器主界面点击艺术家图片按钮启动ArtistsActivity。在文件中歌曲中的歌手名、歌曲名及音乐持续时间进行获取并且列表显示。艺术家模块包括歌手名、歌曲名以及歌曲时间。用户可以单击想要播放的音乐对其播放,跳转方式同音乐模块。关键代码如下:

//歌手名获取

TextView textMusicSinger=(TextView) convertView.

findViewById(_item_singer);

t(ger());

//音乐名获取

TextView textMusicName=(TextView) convertView.

findViewById(_item_name);

t(e());

//音乐持续时间获取

TextView textMusicTime=(TextView) convertView.

findViewById(_item_time);

t(toTime((int)e()));

艺术家列表如下图所示(图4-6):

图4-6艺术家列表

4.3.7 专辑模块

在播放器主界面点击专辑图片按钮启动AlbumsActivity。在文件中歌曲中的歌曲名、专辑名及音乐持续时间进行获取并且列表显示专辑模块包括歌曲名、专辑名以及歌曲时间。用户可以单击想要播放的音乐对其播放。关键获取机制如下所示:

//专辑名称获取

TextView textMusicAlbums=(TextView) convertView.

findViewById(_item_singer);

t(um());

//音乐名获取

TextView textMusicName=(TextView) convertView.

findViewById(_item_name);

t(e());

//音乐持续时间获取

TextView textMusicTime=(TextView) convertView.

findViewById(_item_time);

t(toTime((int)e()));

专辑列表界面如下图所示(图4-7):

图4-7专辑列表

4.3.8 最近播放模块

存储最近音乐播放情况,保存音乐播放的顺序,关键存储机制如下:

//找到layout中songListView注册的id

songListView = (ListView)ewById(ew1);

SongsAdapter adapter=new SongsAdapter(this, icData(this));

pter(adapter);

//设置监听器模式,获取点击事件。

temClickListener(new OnItemClickListener(){})

最近播放歌曲界面如下图所示(图4-8):

图4-8最近播放列表

4.3.9 系统菜单模块

系统菜单模块主要为用户提供使用软件的其他功能,包括退出和关于功能。其截图如下(图4-9):

图4-9 系统菜单模块

点击手机上的menu键,创建两个模块,如下所示:

//点击menu菜单时调用

public boolean onCreateOptionsMenu(Menu menu) {

//创建两个选项块

(0, 1, 1, );

(0, 2, 2, );

return teOptionsMenu(menu);

}

当用户点击menu菜单中退出时使用(-1),使软件系统退出。当用户点击关于时,从MainActivity跳转至AboutActivity显示版权信息,并且当前MainActivity执行finish()方法,效果截图如下图所示(图4-10):

图4-10 版权模块

当用户点击返回按钮的时候播放器返回主界面,具体原理是AboutActivity跳转至MainActivity,并且AboutActivity点击后执行finish()方法。

第5章 软件测试

5.1 软件的测试

一个程序并不可能达到十分完美,难免存在一些错误,就是我们常说的bug。如果不能及时将其找出并修改,会造成系统崩溃并造成不必要的损失。通过软件测试,尽可能多的找出系统中的错误,以便于及时修改。

5.1.1 软件的测试环境

1、软件测试的性能要求

软硬件要求:系统环境 win7;硬件系统环境core i3、3G内存、500G硬盘。此外对其他软件几乎没有依赖性,程序健壮性较好。

2、测试

建立一张模拟的SD卡,上传歌曲文件;分别测试播放器的上/下一首、播放、暂停、初曲/终曲等功能用户体验是否良好。

3、软件测试的评价

软件功能评价:此音乐播放器软件各模块用户体验良好,基本符合设计要求。

结论:此软件的设计和论证是可行的。

5.1.2 测试阶段

软件测试工程量大、过程复杂,在整个软件开发周期中占据着举足轻重的地位,需求调研和软件测试占据了软件开发三分之二时间。对于软件测试我们需要从不同的角度考虑,明确测试的目的,精细化测试的过程,对测试过程进行明确的分类,制定好测试计划,尽量做到细致以及全面的测试。按照软件测试的策略和过程分类,软件测试可分为单元测试、集成测试、确认测试、系统测试和验收测试[21]。它们被依次顺序地执行。

实验主要是进行功能测试,查看弹出报错的信息,在测试中主要出现的错误是“has

stopped unexpectedly”如下图所示

图5-1异常终止

大多数时间出现如上所示的情况,这时我们需要使用LogCat查看错误,课设中曾经常出现的是内存空间已满,出现运行时异常,需要释放进程空间,以导致出现程序运行时出现图5-1所示的现象,所以,当出现错误时,我们必须查看错在哪儿,然后改正。

图5-2调试截图

5.2 测试结果

在课题后期进行了大力度的软件测试,按照测试的流程和规则,主要进行了功能测试。软件主要的bug表现为闪退、卡死等现象,在编辑器上观看log则能发现主要问题是运行时异常。我们主要对bug采取了异常拦截的方式进行调试完善,测试完成后软件稳定运行。

结论

本文主要是对Android平台音乐播放器的分析设计,主要实现了音乐的播放、暂停、上一曲、下一曲、音乐列表、声音控制、退出菜单、播放模式等功能。在本文中第一章简要的介绍了选题依据背景、研究现状等;第二章中讲述了Android的开发基础;第三章进行了详尽的系统需求分析;第四章进行详细设计以及编码实现工作;最后的第五章进行了软件的测试工作,完善软件。本设计的音乐播放器软件能够稳定运行,体积小且反映灵敏,但还是有几点不足的地方,例如最近播放列表无法排序、代码编写冗余重复率高、图片素材布局不太美观等等。在以后我会改进软件的不足,以更优的编码水平,更高超的布局思维模型,并且学习更多新的知识重构这款软件。这款播放器软件还是比较好的,适用于低端智能手机市场,有良好的用户体验和反应速度。相信随着智能手机在发展中国家的普及,它们市场上会拥有庞大的用户群。

参考文献

[1] Yong-Cai P,Wen-chao L,Xiao pment and Research of Music Player

Application Based on Android[C]//Communications and Intelligence Information

Security (ICCIIS),2010 International Conference ,2010:23-25.

[2] 朱婷婷,李惠.基于Android的应用软件的综述[J].电脑与电信,2011,(01):42-43.

[3] LI Y,FENG G,LI L,et pment and Research on Multimedia Application Based

on Android [J].Computer and Modernization,2011, (04):149-150.

[4] 张正政,林耀荣.基于Android系统的影音播放器开发[J].现代电子技术,2011,34(02):5-8.

[5] 秦超,姜良君,蔡永香.基于Android的移动终端GPS测量系统的设计与开发[J].城市勘测,2011,(01):64-67.

[6] 刘昌平,范明钰,王光卫,等.Android手机的轻量级访问控制倡[J].计算机应用研究,2010,27(07):20-25.

[7] 刘仙艳.移动终端开放平台—Android[J].信息通信技术,2011,(04):40-50.

[8] 党李成.基于Google Android智能手机平台的研究与应用[D].安徽大学计算机科学与技术学院,2010:9-12.

[9] 贾理华,乐燕芬,施伟斌.基于Android平台简易即时通讯的研究与设计[J].常州工学院学报,2010,(04):9-12.

[10] 农丽萍,王力虎,黄一平.Android在嵌入式车载导航系统的应用研究[J].计算机工程与设计,2010,31(11):2473-2476.

[11] 赵世彧,张盛,王玉辉,等.智能手机操作系统及其GoogleAndroid上的软件开 发[J].煤炭技术,2011,30(04):197-198.

[12] 宋杰,党李成,郭振朝,等.Android OS手机平台的安全机制分析和应用研究[J].计算机技术与发展,2010,20(06):152-155.

[13] 耿东久,索岳,陈渝,等.基于Android手机的远程访问和控制系统[J].计算机应用,2011,31(02):559-561.

[14] 刘敏.移动终端的Android移植与应用程序设计[D].西安:西安电子科技大学,2011:14-19.

[15] 李金霖,赖超,龙曦,等.基于Android平台的手机日程管理系统[J].计算机与数字工程,2011,39(03):65-68.

[16] 杜铭,范辉.基于Android的点餐系统的研究与实现[J].无线互联科技,2012,(01):84-86.

[17] 陈璟,陈平华,李文亮.Android内核分析[J].现代计算机:下半月版,2009,(11):112-115.

[18] Silva Android Games[M].Mario Zechner:Apress,2012:5-10.

[19] Jerome D d:A Programmer’s Guide[J].Milan

Seoul:Singapore,2008,(03):55-68.

[20] 叶晓静,黄俊伟.基于Android系统的多媒体播放器解决方案[J].现代电子技术,2011,34(24):73-76.

[21] 李蓉.针对嵌入式系统安全核的测试技术研究与实现[D].电子科技大学,15-18.

2005:

致谢

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

在开发过程中我学到了一些经验:系统需求分析的是否合理将决定着的系统开发成功与否,一份合理的需求分析将是成功开发主要因素。我们在着手开发之前不要急于编程,先应有较长的时间去把分析做好,写出相关的开发文档等。然后再开始编写程序代码,这样做到每写一步代码就会心底有数,有条不紊。当然也有些还需要继续深入地方如:最近播放存储不上、图片素材布局不太美观的问题等等。

发布评论

评论列表 (0)

  1. 暂无评论