基于安卓android系统的多媒体播放器的开发功能实现毕业论文_第1页
基于安卓android系统的多媒体播放器的开发功能实现毕业论文_第2页
基于安卓android系统的多媒体播放器的开发功能实现毕业论文_第3页
基于安卓android系统的多媒体播放器的开发功能实现毕业论文_第4页
基于安卓android系统的多媒体播放器的开发功能实现毕业论文_第5页
已阅读5页,还剩95页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华南农业大学珠江学院华南农业大学珠江学院 毕业论文(设计)毕业论文(设计) 基于基于 Android 系统的多媒体播放器的开发系统的多媒体播放器的开发 功能实现功能实现 指导教师: 系:信息工程系 年级专业:_08 级计算机科学与技术 提交日期: 答辩日期: 答辩委员会主席(签名): 评阅人(签名): 年 月 日 摘 要 在这个经济飞速发展的时代,移动设备也日益完善,我们大家都已经有了在手机上听 音乐看电影的习惯,在中国大陆,谷歌发布的 Android 手机因其手机系统的优越性,得以迅 速推广,随着 Android 智能手机的普及,各种基于 Android 的应用软件也如雨后春笋般出现 了。本文主要是对 Android 系统上的一款多媒体播放器应用程序的设计与实现进行阐述。 Android 是一个开源的系统,它的底层是基于 Linux 操作系统的,本论文的多媒体播放器采 用了 Android 开源系统技术,利用 Java 语言和 Eclipse 开发工具来实现这款播放器。同时给 出了详细的系统设计设计过程、部分界面截图以及主要功能运行流程图,文中还对开发过程 中遇到的问题及解决方案进行了讨论。该多媒体播放器集音频、视频播放于一体,音频播放 部分实现了播放、暂停、上一首、下一首、音量调节、歌词同步显示、播放模式选择等功能。 性能良好,用户交互友好,在 Android 系统中能独立运行;视频播放部分实现了一般控制功 能以外,还支持不同视频画面比例的切换等功能。针对 Android 应用程序的开发,是适应时 代要求的,对比时下硬件的发展速度,应用软件的研发还有很长的路要走。 关键词:Android;开源系统;多媒体播放器;应用程序 Abstract In this economic rapid development of The Times, mobile equipment is increasingly perfect, we all have to listen to music on their movie habit, in mainland China, Googles Android mobile phones released because of its mobile phone system, the superiority of the rapid promotion, along with Android smartphone popularization, based on the application of various Android software as have sprung up. This paper is mainly to the Android system on a multimedia player application design and implementation in this paper. Android is an open source system, which is based on the bottom of the Linux operating system, this paper used the media player the Android open source system technology, use Java language and Eclipse development tool to achieve this type of player. And presents the detailed design of the system design process, part of the interface screenshots and main function operation flow diagram, the paper also to development in the process of problems and solutions are discussed. The multimedia player set audio, video broadcast at an organic whole, audio part realize the play, pause, up, down, the sound volume, lyrics synchronous display and play mode selection etc. Function. Performance is good, the user interaction friendly, in the Android system can operate independently; Video broadcast realized the general control function of outside, also support the different video images of the proportion of the switch etc. Function. For Android applications development, is to meet the demands of the era of, the contrast of the development speed of the current hardware, application software development have a long way to go. Keywords: Android; Open source system; Multimedia player; application 设计说明 1 项目概况 我们小组选择这个项目“基于 Android 系统的多媒体播放器的开发”为我们的毕业 设计课题。该项目要求完成一个便携式移动设备(如手机)的多媒体播放器的设计与实现。 随着经济社会的快速发展,3G 网络应用也迅速推广,各种智能手机充斥着市场,手机已 经是人类生活中不可或缺的一部分了。人们除了利用手机作为一种普通通讯工具,也用作生 活娱乐设备。利用手机上安装的播放器来播放视频、音乐已成为人们日常生活的主要活动之 一。本项目完成手机多媒体播放器的开发,并能将一些个性化设计融入其中。能完成该软件 的多线程管理,实现该多媒体播放器的后台播放和后台 Service 控制。要求软件界面设计应 简洁、易于上手,交互设计友好、人性化、个性化,能汇聚用户的忠诚度。 2 设计理念 Android 系统 UI 设计理念: 干净而不过简单 关注内容而非修饰 保存一致,让用户容易投入其中,可附加少许变化 使用云端服务(存储和同步用户资料)来加强用户体验 播放器界面简约大方,时尚而不缺乏美感,用最简单的布局方式呈现出最好的效果;播 放器的功能设计简单,但又不缺乏实用性,而且容易操作,易于上手。 首先,播放器主界面以炫黑为主色调,背景是别具特色的标志为 SkyPlayer 的图片,给 人一种简约的时尚感,也让人加深对 SkyPlayer 这个播放器的印象。播放器的子界面和其他 功能界面的设计也都别具匠心,从不同视角给用户不一样的视觉感受。 其次,为了适应大多数用户的使用习惯,我们将多媒体播放器的功能细分为音频播放器 和视频播放器,用户可以在进入主界面之后根据自己的需要选择。 3 设计规划及设计方法 我们将分为两部分设计该款播放器,第一部分为音频播放器,第二部分为视频播放器。 参照当今主流播放器来设计我们自己的播放器,在功能上追求简单实用,去掉繁琐复杂但却 未被大多数用户所使用的功能模块。 播放器的界面设计主要通过 XML 文件来布局,采用相对布局和线性布局相结合的方法。 界面所用到的背景图片或控件一部分自己设计,一部分直接调用系统自带的,以减少不必要 的工作量。 播放器的功能编码主要基于 Eclipse +SDK 平台,采用 java 面向对象语言来实现。首先 建立一个 Android 项目,将不同功能的类放在不同的包里,使整个项目结构清晰明了,便于 系统调试与整改。 4 设计标准及原则 Android 软件设计应遵循一定的标准和原则。 优秀 UI 设计准则 关注用户 显示正确的内容 给予用户适当的回馈 有章可循的行为模式 容忍错误 系统软件是控制和协调计算机以及外部设备,支持应用的软件开发和运行的系统,是不 需要用户干预的各种程序的集合。主要功能是调度、监控和维护计算机系统,负责管理计算 机系统中各种独立的硬件,使得它们可以协调工作。所以,可以说软件系统是连接需求分析、 硬件系统以及使得系统实现的桥梁,对软件的设计应首先了解软件设计的设计原则: (1)可靠性 用软件系统规模越做越大越复杂,其可靠性越来越难保证。应用本身对系统运行的可靠 性要求越来越高,软件系统的可靠性也直接关系到设计自身的声誉和生存发展竞争能力。软 件可靠性意味着该软件在测试运行过程中避免可能发生故障的能力,且一旦发生故障后,具 有解脱和排除故障的能力。软件可靠性和硬件可靠性本质区别在于:后者为物理机理的衰变 和老化所致,而前者是由于设计和实现的错误所致。故软件的可靠性必须在设计阶段就确定, 在生产和测试阶段再考虑就困难了。 (2)健壮性 健壮性又称鲁棒性,是指软件对于规范要求以外的输入能够判断出这个输入不符合规范 要求,并能有合理的处理方式。软件健壮性是一个比较模糊的概念,但是却是非常重要的软 件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码人员的水平。 (3)可修改性 要求以科学的方法设计软件,使之有良好的结构和完备的文档,系统性能易于调整。 (4)容易理解 软件的可理解性是其可靠性和可修改性的前提。它并不仅仅是文档清晰可读的问题,更 要求软件本身具有简单明了的结构。这在很大程度上取决于设计者的洞察力和创造性,以及 对设计对象掌握得透彻程度,当然它还依赖于设计工具和方法的适当运用。 (5)程序简便 (6)可测试性 可测试性就是设计一个适当的数据集合,用来测试所建立的系统,并保证系统得到全面 的检验。 (7)效率性 软件的效率性一般用程序的执行时间和所占用的内存容量来度量。在达到原理要求功 能指标的前提下,程序运行所需时间愈短和占用存储容量愈小,则效率愈高。 (8)标准化原则 在结构上实现开放,基于业界开放式标准,符合国家和信息产业部的规范。 (9)先进性 满足客户需求,系统性能可靠,易于维护。 (10)可扩展性 软件设计完要留有升级接口和升级空间。 5 主要技术资料 在安卓软件开发中,Android API 文档是最佳的文档资料,地址是 /reference/android/package-summary.html,互联网上也有很多中国 学者翻译出来的中文 API 文档可供下载。 关键词:Android; 多媒体播放器;交互设计;软件设计原则 目录目录 1 绪论.1 1.1 课题背景 .1 1.2 课题目的与意义 .2 1.3 本文组织结构 .2 2 ANDROID 平台概述3 2.1 什么是 ANDROID?.3 2.1.1 Android 简介 .3 2.1.2 Android Features 特性 4 2.1.3 Android 基本框架(Android Architecture) .5 2.1.4 Android 系统的四大组件 .7 2.2 搭建 ANDROID开发环境 8 3 系统分析10 3.1 功能需求分析 10 3.1.1 播放器的基本控制需求10 3.1.2 媒体文件列表的获取14 3.1.3 数据源分析14 3.2 系统界面需求 14 3.4 系统性能需求 15 3.5 运行环境需求 16 4 系统设计16 4.1 系统功能实现过程(时序图)和系统流程图 16 4.1.1 系统功能时序图17 4.1.2 多媒体播放器的系统流程图18 4.2 系统功能表和系统功能结构图 19 5 系统功能实现.21 5.1 播放器主界面功能实现 21 5.1.1 音频播放器主界面的实现21 5.1.2 视频播放器主界面21 5.1.3 播放器一般功能的实现22 5.2 获取媒体文件列表 22 5.3 菜单功能 26 5.4 音乐播放器其他功能 27 5.4.1 歌词同步显示27 5.4.2 播放模式切换28 5.4.3 甩歌功能29 5.5 视频播放器其他功能 31 5.5.1 视频显示比例的切换31 6 系统测试32 6.1 单元测试一 32 6.2 单元测试二 33 6.2.1 测试用例设计 .34 7 结论与展望.36 参考文献.37 致 谢.38 附 录.39 附录 A 名词术语39 附录 B ANDROID播放器项目部分源码 .39 1 音频播放器服务器端代码 MusicService.java 39 2 MusicActivity.java 源码 .49 1 绪论 1.1 课题背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机 市场发展迅速,使得手机操作系统也出现了不同各类,现在市场上主流的手机 操作系统有 Windows mobile,sysbian,以及谷歌的 Android 操作系统,其中占 有开放源代码有事的 Android 系统具有广阔的发展前景,已经和国内外诸多手 机厂家开展了合作。那么能否在手机上拥有自己编写的个性多媒体播放器呢? 答案是肯定的,谷歌 Android 系统就能做到。本文所介绍的多媒体播放器就是 基于谷歌 Android 手机平台的播放器,我们把它命名为 SkyPlayer。 Android 操作系统是谷歌于 2007 年公布的开放式源代码手机系统,它的开 放性相对有其它封闭式手机系统拥有明显的优势,任何人都可以根据自己的喜 好和需求将 Android 系统的功能进行改进,在 Android 平台上开发属于自己的 应用软件。这也让更多的人对这一操作系统有了更浓厚的兴趣。我们开发的这 款多媒体播放器就是基于 Android 平台的。 随着计算机的广泛应用,手机市场的迅速发展,各种音频视频资源也在网 上广为流传,这些资源看似平常,但已逐渐成为了人们生活中必不可少的一部 分了。于是各种手机播放器相继被开发出来,但是很多播放器一味追求外观花 俏,功能过于庞大,导致用户手机资源被过度占用,造成资源浪费。比如说 CPU,内存等占用率过高,在用户执行多任务操作时经常出现卡机甚至是死机 的现象。其实对于大多数普通用户,很多功能都是形同虚设。针对以上各种弊 端,我们选择了开发一种功能实用,用户交互友好的多媒体播放器,将各种性 能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求。 我们研究了市场上主流的播放器,了解它们各自的插件及编码方式,分析 了各种开发方式的优缺点,从可行性分析出发,找出一条适合自己的开发之路, 编写出功能实用,使用方便,占用资源小的播放器。目前已经实现的功能有能 播放常见音视频文件的功能,如 MP3,WAV,MP4,3GP 等,自动获取用户 SD 卡上的音视频文件,具备一般播放器的功能,如播放、暂停、上一首、下一 首、音量调节、歌词同步显示等。播放模式也比较完善,有单曲,顺序,循环 (默认) ,随机播放模式。 1.2 课题目的与意义 随着人们生活节奏地加快,物质生活也越来越丰富了,然而许多人精神上 的状态都是比较紧张的,偶尔听听歌曲,看看电影也不失为一种好的舒缓压力 的方式。本项目的研究目的是开发一款可以播放主流音频和视频文件的多媒体 播放器,并且能够控制播放,暂停,停止,上一首,下一首,音量调节,歌词 显示,界面清新友好,操作简单。易于用户上手。 本项目是一款基于 Android 手机平台的多媒体播放器,能将一些个性化设 计融入其中。能完成该软件的多线程管理,实现该多媒体播放器的后台播放和 后台 Service 控制。要求软件界面设计应简洁、易于上手,交互设计友好、人性 化、个性化,能汇聚用户的忠诚度。 1.3 本文组织结构 表 1.1 论文组织结构表 章节 名称 内容简介 1 绪论 介绍课题的背景与要完成的工作 2 Android 平台概述 介绍Android系统相关理论和平台搭建 3 系统分析 对系统进行需求分析、可行性分析和功能分析 4 系统设计 介绍系统功能模块设计 5 系统功能实现 阐述具体的实现方法 6 系统测试 主要为单元测试,从调试到实现系统的概况 7 结论与展望 对本系统的分析、总结及展望 2 Android 平台概述 本章主要讲述 Android 系统的应用背景以及相关技术框架,了解安卓的发 展史及相关平台知识,有助于我们更好地掌握 Android 开发的技巧。 2.1 什么是 Android? 图 2.1 Android Logo(机器人) 2.1.1 Android 简介 Android 一词的本义指“机器人” ,同时也是 Google 于 2007 年 11 月 5 日宣 布的基于 Linux 平台的开源手机操作系统的名称,该平台由操作系统、中间件、 用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移 动软件。 Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。 目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致” 。 Android 操作系统最初由 Andy Rubin 开发,最初主要支持手机。2005 年由 Google 收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他 领域上。Android 的主要竞争对手是苹果公司的 iOS 以及 RIM 的 Blackberry OS。2011 年第一季度,Android 在全球的市场份额首次超过塞班系统,跃居全 球第一。 2012 年 2 月数据,Android 占据全球智能手机操作系统市场 52.5%的 份额,中国市场占有率为 68.4%。 2.1.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 集成开发环境插件 2.1.3 Android 基本框架(Android Architecture) 图 2.2 Android 结构 (1) Applications 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 编程语言核心库 的大多数功能。 每一个 Android 应用程序都在它自己的进程中运行,都拥有一个独立的 Dalvik 虚拟机实例。 Dalvik 是针对于同时高效地运行多个 VMs 来实现的。 Dalvik 虚拟机执行 .dex 的 Dalvik 可执行文件,该格式文件针对最小内存使 用做了优化。该虚拟机是基于寄存器的,所有的类都经由JAVA 汇编器编 译,然后通过 SDK 中的 dx 工具转化成 .dex 格式由虚拟机执行。 Dalvik 虚拟机依赖于 linux 的一些功能,比如线程机制和底层内存管理 机制。 (5) Linux 内核 Android 是运行于 Linux kernel 之上,但并不是 GNU/Linux。因为在 一般 GNU/Linux 里支持的功能, Android 大都没有支持,包括 Cairo、X11、Alsa、FFmpeg、GTK、Pango 及 Glibc 等都被移除掉了。 Android 又以 bionic 取代 Glibc、以 Skia 取代 Cairo、再以 opencore 取代 FFmpeg 等等。Android 为了达到商业应用,必须移除被 GNU GPL 授权证 所约束的部份,例如 Android 将驱动程序移到 userspace,使得 Linux driver 与 Linux kernel 彻底分开。 bionic/libc/kernel/ 并非标准的 kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的,这样做是为了保留常数、数据结构与宏。 目前 Android 的 Linux kernel 控制包括安全( Security) ,存储器管理 (Memory Management) ,程序管理( Process Management) ,网络堆栈 (Network Stack) ,驱动程序模型( Driver Model)等。下载 Android 源码 之前,先要安装其构建工具 Repo 来初始化源码。 Repo 是 Android 用来 辅助 Git 工作的一个工具。 2.1.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 简介 Broadcast Receiver 顾名思义广播接收器,它和事件处理机制类似,只不过 事件处理机制是程序组件级别的(例如,某个按钮的单击事件) ,而广播事件处 理机制是系统级别的。到目前为止我们可以使用 Intent 来启动一个程序组件, 我们还可以通过使用 sendBroadcast()方法来发起一个系统级别的事件广播来传 递消息。我们可以在你的应用程序中实现 Broadcast Receiver 来监听和响应这些 广播的 Intent。 (4) ContentProvider 简介 Content Provider 用来保存和检索数据,并且使应用程序之间相互访问数据 成为可能。它是跨应用程序共享数据的唯一方法。 Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大 量的 Content Provider。它们被定义在 vider 包下面。通过这样定义好 的 ContentProvider 我们可以方便的进行数据操作。当然我们必须拥有适当的权 限。我们也可以自己来定 ContentProvider 共享我们的数据,方便用户的访问。 2.2 搭建 Android 开发环境 任何事物要运行,都需要有它自身的环境配置,Android 也不例外,下面就 来简单讲解一下在 Windows7 系统环境下 Android 开发平台的搭建。 搭建开发环境需要的软件有: 1. PC 操作系统:Windows7 2. 软件包:Android SDK(Software Development kit) 、ADT-16.0.0 以上 (Android Development Tool) 3. IDE 环境:Eclipse IDE+ADT Eclipse3.5 以上 4. JDK:(JRE)Java Runtime Environment 虚拟机 、(JDK)Java Development kit 安装步骤如下: 安装 JDK 在 SUN 官网下载,网址为 /downloads/,然后找 到 适合自己系统的安装文件 jdk-7u1-windows-x64.exe,下载完成后安装。然后在 CMD 窗口输入 java version 检测是否安装成功,如果未能成功则需要自己手动 在系统环境变量新建一个“JAVA_HOME”变量,变量值设置为 JDK 安装目录 即可。再新建一个 classpath 变量,值设置为 “.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar” ,然后找到 PATH 变量,在值的最前面加上“%JAVA_HOME%/bin;” (环境变量在我的电脑高级 系统设置属性那里设置) 。 安装 Eclipse 进入 Eclipse 下载页面 /downloads/,选择 Eclipse IDE for Java Developers,下载完成后解压缩即可使用。首次打开可选择自己的工作 站点。 安装 Android SDK 打开 Android 开发者社区网址 /,转到 SDK 下 载页面即可下载 android-sdk_r17-windows.zip,下载后解压缩,将解压后的 tools 目录绝对路径添加到系统变量 SDK_HOME 中,并在 PATH 系统变量前面加上 “%SDK_HOME%tools;”在 CMD 窗口中输入测试命令 android h 验证是否安 装成功。 安装 ADT 这里我们不建议联网安装,因为通常都会失败,被屏蔽了。我们可以下去 下载 ADT 包,然后手动导入安装。打开 EclipsehelpInstall New Software, 单击 AddLocal,将已下载好的 ADT 包导入,然后选中所有可用插件,安 装。安装过程比较慢,需要耐心等待。 开发环境验证及安卓模拟器(AVD)的创建 基本软件安装完毕以后,打开 Eclipse 依次选择 FileNewProject 会看见 Android 项目,创建一个新的项目。至此,我们的开发环境就搭建好了。还有就 是创建 AVD,可以选择在命令行中创建也可以在 EclipseWindowAVD Manager 中新建模拟器。 3 系统分析 3.1 功能需求分析 根据项目的预期目标,我们可以获得项目系统的基本需求,以下从不同角 度来描述系统的需求,并且使用用例图来描述系统的功能需求,我们分成四部 分来概括,即播放器的基本控制需求,媒体文件列表的获取,交互友好性设计 和播放器扩展卡需求。以下分别描述: 3.1.1 播放器的基本控制需求 我们把多媒体播放器的功能细分成音频播放器和视频播放器两部分,音乐 播放器主要有播放、暂停、上一首、下一首、第一首、最后一首、音量控制等 功能;视频播放器主要有播放、暂停、上一个、下一个、音量控制、全屏切换 等等。分别对这两部分的控制功能作出分析,如图 3.1(音频控制)和图 3.2(视频控制) 。 图 3.1 音频播放器基本控制图 图 3.2 视频播放器基本控制图 表 3.1 “播放”用例说明 参与者 用例说明 用户 用例名称:播放音乐 /视频 目标:使得用户可以播放在媒体列表中选中 的音频/视频文件 前置条件: 播放器正在运行 基本事件流: 用户单击 “播放”按钮 播放当前选中音乐 /视频 表 3.2 “暂停”用例说明 参与者 用例说明 用户 用例名称:暂停音乐 /视频 目标:使得用户可以暂停正在播放的音频/视频文件 前置条件: 音乐/视频正在播放 基本事件流: 用户单击 “暂停”按钮 暂停当前音乐 /视频 表 3.3 “切换上/下首”用例说明 参与者 用例说明 用户 用例名称: 切换上一个/下一个音乐/视频 目标:使得用户可以切换到上一个/下一个音乐/视频 前置条件: 音乐/视频正在播放或暂停 基本事件流: 用户单击 “上个/下个”按钮 播放上一个/下一个音乐 /视频 表 3.4 “切换第一/最后一首”用例说明 参与者 用例说明 用户 用例名称: 切换第一/最后一首音乐 目标:使得用户可以切换到第一/最后一首音乐 前置条件:音乐 /视频正在播放或暂停 基本事件流: 用户单击 “第一首/最后一首 ”按钮 播放第一 /最后一首音乐 表 3.5 “查看媒体列表”用例说明 参与者 用例说明 用户 用例名称: 查看媒体列表 目标:使得用户可以查看音乐/视频列表 前置条件: 播放器正在运行 基本事件流: 用户单击 “听音乐”或“视频列表 ”图片按钮 用户获得音乐 /视频列表 表 3.6 “控制音量”用例说明 参与者 用例说明 用户 用例名称: 控制音量 目标:使得用户可以调节音量大小 前置条件:播放器正在运行 基本事件流: 用户调节音量控制条 用户取得音量大小 3.1.2 媒体文件列表的获取 当用户启动播放器时,从 SD 卡获取多媒体文件信息,并以列表的形式显示 在手机屏幕上,供用户选择播放,文件格式有 mp3,wma,mp4,3gp 等。 我们以音乐播放器部分为例,当我们从 SD 卡里面获取关于 mp3/wma 详细 信息,包括 TITLE(标题) 、ARTIST(艺术家) 、ALBUM(专辑) 、SIZE(大 小) 、DURATION(持续时间) 、DATA(数据) 、DISPLAY_NAME(显示名称) 等字段,我们可以通过不同的字段来排列,用户可以获得不同的歌曲列表,让 用户有更多的选择方式。 3.1.3 数据源分析 播放器应用程序自行调用 Android 库函数,SDCard 里所有媒体信息都存储 在这个类里vider.MediaStore,从而可以轻松获取 SD 里面的多媒 体文件的详细信息,当然前提是 SDCard 存在。 MediaStore 这个类是 android 系统提供的一个多媒体数据库,android 中多 媒体信息都可以从这里提取。这个 MediaStore 包括了多媒体数据库的所有信息, 包括音频,视频和图像,android 把所有的多媒体数据库接口进行了封装,所有的 数据库不用自己进行创建,直接调用利用 ContentResolver 去掉用那些封装好的 接口就可以进行数据库的操作了。 3.2 系统界面需求 播放器界面要求布局合理,颜色舒适,控制按钮友好,所以我们采用系统 自带播放控制按钮和自定义播放模式按钮、音轨、进度条相结合,合理利用资 源,如下图为音频和视频播放器界面示例: 图 3.3 音频播放器界面 图 3.4 视频播放器界面 3.4 系统性能需求 根据 Android 手机系统要求无响应时间为 5 秒,所以就有如下性能要求: (1) 当点击播放时,程序响应时间最长不能超过 5 秒 (2) 当点击暂停时,程序响应时间最长不能超过 5 秒 (3) 当点击第一首/最后一首时,程序响应时间最长不能超过 5 秒 (4) 当点击上/下一首时,程序响应时间最长不能超过 5 秒 (5) 当要求退出播放器时,程序响应时间最长不能超过 5 秒 3.5 运行环境需求 硬件环境:Android 手机基于 Linux 操作系统 操作系统:Android 2.3.3 3.2 版本 开发环境:Eclipse 3.6 + ADT 17.0.0 + JDK-7u1 + SDK_r17 4 系统设计 4.1 系统功能实现过程(时序图)和系统流程图 我们根据播放器具体的功能实现过程画出了功能实现时序图和系统流程图, 可以清晰明了地展示整个播放器运行时的操作流程。 系统功能时序图(图 4.1)主要描述了系统在运行过程中各个功能类之间的 调用情况,当用户的操作满足触发条件时,系统将调用相应的方法实现用户的 需求。图中的“媒体文件列表列表” 、 “播放界面”和“功能设置”是音频播放 器和视频播放器相结合的产物,为了整个系统的统一性,这里没有一分为二, 而是将整个多媒体播放器的时序图描绘出来。 系统流程图(图 4.2)主要介绍整个软件功能实现的过程,从用户启动软件 到使用软件,再到退出,这个过程通过流程图来描绘,清晰明了。整个系统的 实现充分体现出的用户交互友好性。 4.1.1 系统功能时序图 图 4.1 系统功能时序图 4.1.2 多媒体播放器的系统流程图 程序启动? 是 主界面 否 音乐播放器视频播放器 音乐播放列表视频播放列表 音 乐 艺 术 家 专 辑 最近 播放 选择歌 曲? 是 音乐播放界面 否 视 频 音 乐 音 乐 库 视 频 库 关 于 退 出 点击 Menu? 是 是 是 是 是 播放器介绍界面 是 返回?是 是 视频播放列表 程序结束 选择视 频? 是 视频播放界面 否 图 4.2 系统流程图 4.2 系统功能表和系统功能结构图 我们对整个播放器项目进行了一个比较系统的分析,下面通过系统功能表 和功能结构图来理清整个播放器的功能实现。如图 2.5 和表 2.9 : 图 4.3 系统功能结构图 表 4.1 系统功能表 功能类别子功能子功能 音乐播放器进入音乐播放器界面 主界面 视频播放器进入视频播放器界面 播放播放歌曲-线程启动-时间更新 暂停暂停歌曲-线程暂停-时间暂停 停止停止歌曲-线程停止-时间停止 上一首播放列表索引变化-寻找上一 ID 歌曲 音乐播放界面 下一首播放列表索引变化-寻找下一 ID 歌曲 续表 4.1 功能类别子功能子功能 跳转至视频播放器界面 跳转至音乐库界面 跳转至视频库界面 跳转至播放器关于界面 音乐播放界面菜单 退出程序 音乐播放界面 音量调节调节音乐播放器播放音量 播放播放视频-线程启动-时间更新 暂停暂停视频-线程暂停-时间暂停 停止停止视频-线程停止-时间停止 上一部视频列表索引变化-寻找上一 ID 视频 下一部视频列表索引变化-寻找下一 ID 视频 音量控制调节视频播放器播放音量 跳转至音乐播放器界面 跳转至音乐库界面 跳转至视频库界面 跳转至播放器关于界面 视频播放界面 视频播放界面菜单 退出程序 5 系统功能实现 5.1 播放器主界面功能实现 5.1.1 音频播放器主界面的实现 音频主界面主要是通过一个 XML 布局文件实现的,我们把它命名为 music.xml,这里采用相对布局和线性布局相结合的方法。我们还要自行定义一 个 LrcView,在音频播放器播放歌曲时同步显示歌词。 5.1.2 视频播放器主界面 视频播放器界面的实现跟音频播放器比较相似,我们把它命名为 video.xml,都是在 RelativeLayout(相对布局)中嵌套 LinearLayout(相对布局) ,在布局文件中定义一个 SurfaceView,用作显示视频播放画面。 图 5.1 音乐播放器主界面 5.1.3 播放器一般功能的实现 图 5.2 功能按键截图 如图所示,音频播放器主要实现的一般播放控制功能有:播放、暂停、上 一首、下一首、第一首、最后一首。 android 的媒体播放原理:android 源程序已经为我们封装好了一个接口类, 叫 MediaPlayer。该接口在执行行需要一个数据源,通过如下四个步骤: 第一步:MediaPlayer.reset();复位操作,为以后的媒体准备播放作准备。 第二步:传入歌曲数据源,这里也是一个数据流 MediaPlayer.setDataSource();参数需要传一个路径,该接口类在收到路径后将其 转化为数据源。 第三步:准备播放数据源,调用方法 MediaPlayer.Prepare(); 第四步:MediaPlayer.Start();播放数据源,该数据源播放后,不再与程序 有关,需要用 MediaPlayer.Stop()方法让其停止或 MediaPlayer.Start();让其启动; 歌曲数据源的获得:我们首先从 SD 卡中获取我们所需要的多媒体文件信 息,并以列表的方式显示出来,如图 4.7 所示。然后我们根据音频文件的_ID 信 息获取当且播放的位置。 我们建了一个适配器包,用来存放不同的功能列表功能。利用 MusicService 和 MusicActivity 控制音频的播放。详细代码见附录 2“音频播放 器服务器端代码 MusicService.java”和“ MusicActivity.java 代码” 。 5.2 获取媒体文件列表 MediaStore 这个类是 android 系统提供的一个多媒体数据库,android 中多 媒体信息都可以从这里提取。这个 MediaStore 包括了多媒体数据库的所有信息, 包括音频,视频和图像,android 把所有的多媒体数据库接口进行了封装,所有的 数据库不用自己进行创建,直接调用利用 ContentResolver 去调用那些封装好的 接口就可以进行数据库的操作了。 图 5.3 以歌名为首选项的音乐文件列表界面 首先,要得到一个 ContentResolver 实例,ContentResolver 可以这样获取, 利用一个 Activity 或者 Service 的 Context 即可。如下所示: ContentResolver mResolver = ctx.getContentResolver(); 上面的那个 ctx 的就是一个 context,Activity.this 就是那个 Context,这个 Context 就相当于一个上下文环境。得到这个 Context 后就可以调用 getContentResolver 接口获取 ContentResolver 实例了。 ContentResolver 实例获得后,就可以进行各种查询,下面我就以音频数 据库为例讲解增删改查的方法,视频和图像和音频非常类似。 在讲解各种查询之前,我给大家介绍下怎么看 android 都提供了哪些多媒 体表。在 adb shell 中,找到/data/data/viders.media/databases/下, 然后找到 SD 卡的数据库文件(一般是一个.db 文件),然后输入命令 sqlite3 加 上这个数据库的名字就可以查询 android 的多媒体数据库了。.table 命令可以 列出所有多媒体数据库的表,.scheme 加上表名可以查询表中的所有列名。这 里可以利用 SQL 语句来查看你想要的数据,记得最后一定要记住每条语句后 面都加上分号。那么怎么在这些表上进行增删改查。查询代码如下所示:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论