基于android平台的音乐播放器毕业论文_第1页
基于android平台的音乐播放器毕业论文_第2页
基于android平台的音乐播放器毕业论文_第3页
基于android平台的音乐播放器毕业论文_第4页
基于android平台的音乐播放器毕业论文_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

班 级 学 号 河北 XXXXXXXXXXX 学院 毕业论文 题目: 基于 android 平台的音乐播放器 姓 名 专 业 指导教师 河北 XXXXXX 学院 XXXX 系 二 0 一 二 年 十二 月 河北 xxxxxxxxxx 学院 第 2 页 共 42 页 基于 android 平台的音乐播放器 摘要 随 着中国进入 3G 时代,整个软件行业也开始从 PC 时代逐步转移到后 PC时代,从互联网时代转移到移动互联网时代。这个时代是一个充满机遇与挑战的时代,三大运营商进入了新一轮的角逐,手机厂商开始了新一轮的战役,在这场战役中以操作系统为主要武器,苹果的 IOS,诺基亚的塞班,微软的 Windows Mobile, Google 的 Android。在这场战役中Android异军突起,用了不到三年的时间将诺基亚塞班拉下马,成为世界上最炙手可热的手机操作系统。目前 Android 是最热门的操作系统,凭借 Linux 的软件优势其应用的广泛程 度已经让其他对手相形见绌。所以开发基于 Android操作平台的应用具有巨大的意义。 本文就在分析讨论 Android 手机软件开发技术原理的基础上,开发出能为用户提供更好的基于 Android平台的音乐播放器软件。 关键字 : 3G; android;智能手机平台 :音乐播放器 河北 xxxxxxxxxx 学院 第 3 页 共 42 页 目 录 第 1 章 绪论 . 4 1.1 项目背景 . 4 1.2 编写目的及意义 . 4 1.3 本项目实现的基本目标和研究目的 . 5 1.4 参考资料 . 5 第 2 章 项目需求分析 . 5 2.1 系统界面需求 . 5 2.2 系统结构图和流程图 . 6 2.3 功能需求 . 7 2.3.1 播放器的基本控制需求 . 7 2.3.2 播放清单列表管理需求 . 9 2.3.3 播放友好性需求 . 10 2.3.4 功能需求分析 . 11 2.4 系统性能需求 . 11 2.5 运行环境需求 . 11 第 3 章 Android 数据库设计 . 12 3.1 数据库表的介绍 . 12 3.2 数据库的连接 . 13 第 4章 Android项目介绍 . 16 4.1 开发语言简介 . 16 4.2 搭建 Android 开发环境 . 20 4.3 Android 音乐播放器的工程 . 21 第 5章 系统功能详细设计 . 25 5.1 欢迎界面模块详细设计 . 25 5.2 主界面 模块详细设计 . 27 5.3 播放列表模块详细设计 . 29 5.4 歌曲播放模块详细设计 . 32 5.5 会员登录模块详细设计 . 34 5.6 会员注册模块详细设计 . 37 第 6章 系统测试 . 39 6.1 登陆功能测试 . 39 6.2 音乐播放功能测试 . 41 第 7章 总结 . 41 致 谢 . 42 河北 xxxxxxxxxx 学院 第 4 页 共 42 页 第 1章 绪论 1.1 项目背景 当今社会的生活节奏越来越快,人们对手机的要求也越来越高,由于手机市场发展迅速,使得手机操作系统也出现了不同各类,现在的市场上主要有 四 个手机操作系统, 苹果的 IOS,诺基亚的塞班,微软的 Windows Mobile, 以及谷歌的 Android操作系统,其中占有开放源代码优势的 Android 系统有最大的发展前景。那 么能否在手机上拥有自己编写的个性音乐播放器呢?能的,谷歌 Android系统就能做到。本文的音乐播放器就是基于谷歌 Android手机平台的播放器。 Android:是谷歌于 2007年公布的开放式源代码手机系统,它的开放性就优于其它封闭式的手机系统,因此,任何人都可能根据自己的喜好将手机系统中的所有功能重新编写。这使得越来越多的人关注这个操作系统。本次作品音乐播放器就是基于Android平台的。 随着计算机的广泛运用,手机市场的迅速发展,各种音频视频资源也在网上广为流传,这些资源看似平常,但已经渐渐成为人们生活 中必不可少的一部分了。于是各种手机播放器也紧跟着发展起来,但是很多播放器一味追求外观花哨,功能庞大,对用户的手机造成了很多资源浪费,比如 CPU,内存等的占用率过高,在用户需要多任务操作时,受到了不小的影响,带来了许多不便,而对于大多数普通用户,许多功能用不上,形同虚设。 1.2 编写目的及意义 鉴于当前的背景,及产生的 各种弊端,选择了开发多语种的音频视频播放器,将各种性能优化,继承播放器的常用功能,满足一般用户(如听歌,看电影)的需求,除了能播放常见格式的语音视频文件,高级功能:还能播放 RMVB 格式的视频文 件。此外,还能支持中文、英文等语言界面。 要研究了各种市场上流行的手机播放器,了解它们各自的插件及编码方式,还有各种播放器播放的特别格式文件,分析各种编码的优缺点以及各种播放器本身存在的缺陷和特点,编写出功能实用,使用方便快捷的播放器。目前已经实现的功能有能播放常见音频文件的功能,如 MP3, WAV 等,拥有播放菜单,能选择播放清单,具备一河北 xxxxxxxxxx 学院 第 5 页 共 42 页 般播放器的功能,如快进,快退,音量调节等。播放模式也比较完善,有单曲,顺序,循环,随机播放等模式。 1.3 本项目实现的基本目标和研究目的 本文要实现的基本目标和主要研究内 容有以下几个方面: ( 1) 开场动画 。 ( 2) 音乐播放器的基本功能(播放,暂停,停止,上一首,下一首,音量调节, 歌词显示等等)。 ( 3) 本地音乐的管理 ,自动扫描 SD卡的音乐 ,在列表显示 30秒以上的音频文件。 ( 4) 底部菜单 我的音乐(主界面),随便听听(联网),搜歌(联网),功能菜 单 。 ( 5) 会员 登陆 /注册(登陆成功后进入的云端好音乐,随时听好听的音乐) 。 ( 6) 歌曲的播放模式及各种设置 1.4 参考资料 android初级教程 android中级教程 android高级教程 基于 JSP的 Web应用开发 以上文献,全部来自安博教育集团组编。 第 2章 项目需求分析 2.1 系统界面需求 播放器界面要求布局合理,颜色舒适,控制按钮友好,要求整体有一个主要的元素标准,统一的主题思想。 例如登陆界面: 河北 xxxxxxxxxx 学院 第 6 页 共 42 页 2.2 系统结构图和流程图 ( 1) 音乐播放器的系统流程图 (图 2.2.1) 河北 xxxxxxxxxx 学院 第 7 页 共 42 页 图 2.2.1 ( 2) 系统功能表 (表 ) 功能类别 子功能 子功能 播放列表 播放列表菜单 退出播放 从扩展卡寻找歌 曲 歌曲菜单 播放 -进入播放界面 删除 -数据库同步更新 重命名 -数据库同步更新 向上、下移动 -数据库同步更新 播放界面 播放 播放歌曲 -线程启动 -时间更新 暂停 暂停歌曲 -线程暂停 -时间暂停 停止 停止歌曲 -线程停止 -时间停止 上一首 播放列表索引变化 -寻找上一 ID 歌曲 下一首 播放列表索引变化 -寻找下一 ID 歌曲 播放界面菜单 返回到播放列表 返回到主菜单 从扩展卡寻找歌曲 退出播放器 隐藏播 放界面 主菜单 退出程序 程序退出 进入播放列表 显示播放列表 表 2.3 功能需求 2.3.1 播放器的基本控制需求 如图: 河北 xxxxxxxxxx 学院 第 8 页 共 42 页 图 2.3.1 播放器基本功能图 用例名称:播放 参与者:用户 目标:使得程序播放选中的歌曲 前置条件:程序运行在播放菜单选项中 基本事件流: 1.用户单击“播放”按钮 2.播放器进入播放状态 用例名称:暂停 参与者:用户 目标:使得用户可以暂停正在播放的歌曲 前置条件:歌曲正在播放且 未停止和暂停 基本事件流: 1.用户单击“暂停”按钮 2.播放器将暂停当前的歌曲 用例名称:停止 河北 xxxxxxxxxx 学院 第 9 页 共 42 页 参与者:用户 目标:使得用户可以停止正在播放的歌曲 前置条件:歌曲正在播放或暂停 基本事件流: 1.用户单击“停止”按钮 2.播放器将停止当前播放的歌曲 用例名称:上一首 /下一首 参与者:用户 目标:使得用户可以听上一首或下一首歌曲 前置条件:歌曲正在播放或暂停 基本事件流: 1.用户单击“上一首或下一首”按钮 2.播放 器将播放上一首或下一首歌曲 2.3.2 播放清单列表管理需求 图 2.3.2 播放器基本功能图 用例名称:播放 参与者:用户 目标:使得程序播放选中的歌曲 前置条件:程序运行在播放菜单选项中 河北 xxxxxxxxxx 学院 第 10 页 共 42 页 基本事件流: 1.用户单击“播放”按钮 2.播放器进入播放状态 用例名称: 返回 参与者:用户 目标:使得程序 返回上一层 前置条件:程序运行在播放菜单选项中 基本事件流: 1.用户单击“ 返回 ”按钮 2.返回到主界面 用例名称: 删除 参与者:用户 目标:使选中的歌曲 删除 前置条件:程序运行在播放菜单选项中 基本事件流: 1.用户单击“ 删除 ”按钮 2.播放器 删除 选中歌曲 /全部移除歌曲 2.3.3 播放友好性需求 用户歌词开启歌词关闭播放模式系统设定歌词显示单曲循环顺序播放随机播放播放设定 用例名称:播放模式 河北 xxxxxxxxxx 学院 第 11 页 共 42 页 参与者:用户 目标:使得程序进入播放模式设定状态 前置条件:程序运行在播放器设定界面中 基本事件流: 1.用户单击“顺序、随机、单曲”按钮 2.播放器进入选中模式播放状态 用例名称:歌词显示 参与者:用户 目标:使得程序进入播放器歌词 设置状态 前置条件:程序运行在播设定界面 基本事件流: 1.用户单击“歌词开关按钮”按钮 2.播放器显示或关闭歌词 2.3.4 功能需求分析 功能需求定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了用户的业务需求。用户需求文档描述了用户使用产品必须要完成的任务。针对音乐播放器分别对音乐播放、在线音乐播放及会员特权的换肤等功能进行详细的调研和分析。 2.4 系统性能需求 根据 Android 手机系统要求无响应时间为 5 秒,所以就有如下性能要求: ( 1) 当要求歌曲播 放时,程序响应时间最长不能超过 5秒 ( 2) 当要求歌曲暂停时,程序响应时间最长不能超过 5秒 ( 3) 当要求歌曲停止时,程序响应时间最长不能超过 5秒 ( 4) 当要求歌曲上 /下一首时,程序响应时间最长不能超过 5秒 2.5 运行环境需求 操作系统: Android 手机基于 Linux操作系统 支持环境: Android 1.5 - 4.0.3版本 开发环境: MyEclipse 8.5 ADT 0.95 MySQL Tocat 6.0 河北 xxxxxxxxxx 学院 第 12 页 共 42 页 第 3章 Android 数据库设计 数据结构组织和数据库文件设计要根据不同用途,使用要求等,来决定数据的整体组织 形式等一系列问题。 数据库,顾名思义,是存放数据的仓库。只不过这个仓库是在计算机存储设备上,而且数据是按一定的格式存放的。数据库中的数据按一定数据模型组织、描述和存储,具有较小的重复度、较高的数据独立性和易扩展性,并且可以被在一定范围内的各种用户共享。在涉及数据库的软件开发中,需要根据有待 解决的问题性质、规模,以及所采用的前端程序创建工具等,做出合适的数据库类型选择。 3.1 数据库表的介绍 本系统采用 MySQL 数据库系统,在该系统中新建一个数据库,将其命名为mediaplayer.sql。然后,在该系 统中创 2 个数据库表,分别为 会员信息 表(table_user) 、 云播放列 表 (table_cloudlist)。 下面对主要的数据库表做简要的介绍: 表 3.1音乐播放器表清单 表名称 表用途 table_user 会员信息 表 table_cloudlist 云播放列 表 3.1.1 用户注册表 会员信息 表包含了用户的 ID、用户名、密码、邮箱。 表 3.1.1 会员 信息表 列名 数据类型 长度 字段描述 UserID int 11 用户 ID,主键,自动增长 UserName varchar 50 用户名 Password varchar 20 用户密码 Email varchar 50 用户邮箱 3.1.2 云播放列表 云播放列 表包含了 列表 的 ID、 歌名 、 歌手名字 。 河北 xxxxxxxxxx 学院 第 13 页 共 42 页 表 3.1.1 会员 信息表 列名 数据类型 长度 字段描述 ListID int 11 L 列表 ID,主键,自动增长 MusicName varchar 50 歌 名 SingerName varchar 20 歌手名字 3.2 数据库的连接 该项目需要客户端和服务器端的连接,进行数据的交互,查询,添加等活动。所以 服务器端必须先与数据连接,进行数据交互,就是所谓的后台服务。 服务器端连接数据库,需要 JDBC的支持。 JDBC的全称是 Jave DataBase Connectivity(Java 数据库连接,严格的讲, JDBC是 Sun Microsystems 注册的商标而非缩写 )。 JDBC是 SUN公司定义的 Java操作数据库的规范(一系列接口)。通过 JDBC可以操作任何的关系数据库(前提是具备数据库JDBC驱动程序)。 3.2.1 JDBC 工作原理 JDBC定义了一座操作数据库的接口,不同的数据库厂商提供了 JDBC接口的实现,这个实现称为 JDBC 驱动。这样就可以通过 JDBC 接口来对不同的数据库获得统一的操作。 JDBC工作原理如图: 最顶层是我们编写的 Java 的应用程序, Java 应用程序通过 JDBC API 来连接和操作数据库, JDBC API定义了访问数据库的接口和类,其中一些接口河北 xxxxxxxxxx 学院 第 14 页 共 42 页 由不同的数据库厂商来实现。 这些不同的数据库厂商提供的 JDBC 驱动程序需要由 JDBC Manager 来管理, JDBC Driver Manager 管理的这些不同数据库厂商的 JDBC 驱动程序,负责连接各种不同的数据库。 3.2.2 JDBC API 简单地说, JDBC API可做的三件事:与数据库建立连接,发送并执行 SQL语句,获取处理结果。如图所示: 3.2.3 JDBC 程序访问数据库 JDBC访问数据库的过程我们可以分解为 1个准备和 8个步骤(天龙八部),如图所示: 1 个 准 备 : 从 官 网 上 下 载 MySQL 数据库 JDBC 驱动的 jar 包:mysql-connector-java-3.1.11-bin.jar 文件,将 jar 包放到 Web 应用放在WEB-INF/lib目录中 河北 xxxxxxxxxx 学院 第 15 页 共 42 页 8个步骤(天龙八部): ( 1) 第一步:加载并注册连接数据库的驱动程序类 举个例子: Class.forName(com.mysql.jdbc.Driver); ( 2) 第二步:创建与数据库的连接 举个例子: String URL=jdbc:mysql:/localhost:3306/mediaplayer; Connection con=DriverManager.getConnection(URL,数据库名 ,密码 ); ( 3) 第三,四步:查询数据库 举个例子: String str =select * from table_cloudlist; pstmt = conn.prepareStatement(str); ( 4) 第五步:处理结果 举个例子: rs = pstmt.executeQuery(); while(rs.next() CloudList clist = new CloudList(); clist.setListID(rs.getInt(1); clist.setMusicName(rs.getString(2); clist.setSingerName(rs.getString(3); clists.add(clist); ( 5) 第六、七、八步:关闭结果集、查询语句及数据库的连接(注意关闭的顺序先 ResultSet 再 PreparedStatement 最后为 Connection) 举个例子: finally DBC.close(rs); DBC.close(pstmt); DBC.close(conn); 河北 xxxxxxxxxx 学院 第 16 页 共 42 页 第 4章 Android 项目介绍 4.1 开发语言简介 4.1.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。 4.1.2 Android Features 特性 Android系统有如下的几大特性: 应用程序框架 支持组件的重用与替换 Dalvik 虚拟机 专门为移动设备做了优化 内部集成浏览器 该浏览器基于开源的 WebKit引擎 优化的图形库 包括 2D和 3D 图形库, 3D图形库基于 OpenGL ES SQLite 用作结构化的数据存储 河北 xxxxxxxxxx 学院 第 17 页 共 42 页 多媒体支持 包括常见的音频、视频和静态印象文件格式(如 MPEG4、H.264、 MP3、 AAC、 AMR、 JPG、 PNG、 GIF) GSM 电话(依 赖于硬件) 蓝牙 Bluetooth, EDGE, 3G and WiFi (依赖于硬件) 照相机, GPS,指南针,和加速度计 (依赖于硬件) 丰富的开发环境 包括设备模拟器,调试工具,内存及性能分析图表,和 Eclipse 集成开发环境插件 4.1.3 Android 基本框架( Android Architecture) (1)Applications Application Android 会同一个核心应用程序包一起发布,该应用程序包包括 email客户端, SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所 有的应用程序都是用 JAVA编写的。 (2)Application FrameWork 开发者完全可以访问核心应用程序所使用的 API 框架。该应用程序架构用来简化组件软件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。该应用程序重用机制使得组建可以被用户替换。 所有的应用程序都由一系列的服务和系统组成,包括: 可扩展的视图( Views)可以用来建应用程序,包括列表( lists),网格( grids),文本框( text boxes),按钮( buttons),甚至包括一个可嵌入的 web浏览器 内容管理器( Content Providers)使得应用程序可以访问另一个应用程序的数河北 xxxxxxxxxx 学院 第 18 页 共 42 页 据(如联系人数据库),或者共享它们自己的数据。 资源管理器( Resource Manager)提供非代码资源的访问,如本地字符串,图形,和分层文件( layout files)。 通知管理器( Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。 活动类管理器( Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能 。 (3)Libraries 库 Android 包括一个被 Android 系统中各种不同组件所使用的 C/C+ 库集。该库通过 Android 应用程序框架为开发者提供服务。以下是一些主要的核心库: 系统 C 库 - 一个从 BSD 继承来的标准 C 系统函数库,专门为基于 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 2.6 内核,如安全性,河北 xxxxxxxxxx 学院 第 19 页 共 42 页 内存管理,进程管理,网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件堆栈之间的硬件抽象层。未来发展老牌智能手机软件平台制造商 Symbian 发言人则表示: Google 的 Android 只不过是另一个 linux, symbian 对其它软件与其形成的竞争并不感到担心。除了北美之外, Symbian在其它地区智能手机市场 都占有大部分市场份额。与 iPhone相似, Android 采用 WebKit浏览器引擎,具备触摸屏、高级图形显示和上网功能,用户能够在手机上查看电子邮件、搜索网址和观看视频节目等,比 iPhone 等其他手机更强调搜索功能,界面更强大,可以说是一种融入全部 Web应用的单一平台。 4.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 必须在Android Manifest.xml 配置文件注册,通过 元素声明才能使用 .Service 有自己的生命周期,我们可以调用 startService()启动一个Service或者 bindService()方法来绑定一个存在的 Service ( 3) Broadcast Receiver 简介 Broadcast Receiver 顾名思义广播 接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的(例如,某个按钮的单击事件),而广播事件处理机制是系统级别的。到目前为止我们可以使用 Intent来启动一个程序组件,我们还可以通过使用 sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以在你的应用程序中实现 Broadcast Receiver来监听和响应这些广播的 Intent 。 河北 xxxxxxxxxx 学院 第 20 页 共 42 页 ( 4) ContentProvider 简介 Content Provider 用来保存和检索数据,并且使应用程序之间相 互访问数据成为可能。它是跨应用程序共享数据的唯一方法。 Android 为常用的数据类型(如:音视频、图片和联系方式等)提供了大量的 Content Provider。它们被定义在 vider包下面。通过这样定义好的 ContentProvider 我们可以方便的进行数据操作。当然我们必须拥有适当的权限。我们也可以自己来定 ContentProvider 共享我们的数据,方便用户的访问 4.2 搭建 Android开发环境 任何事物要运行,都要有它的环境, Android 也有它的环境才能够 运行,下面介绍Android的开发环境配置。 搭建开发环境需要的软件: 操作系统: window XP 或 linux 软件包: Android SDK(Software Development kit Java Development kit) 、 ADT(Android Develoopment Tool) IDE环境: Eclipse IDE+ADT Eclipse3.3以上 JDK: Java Runtime Environment 虚拟机 、 (JDK)Java Development kit 安装步骤如下: 第一步:安装 Java 虚拟机 sun-java6-jdk版本。 第二步:安装 Eclipse3.5工具,到官网 /downloads/,选择版本下载后进行安装。 第三步:安装 Android SDK:首先要下载 SDK,可以在这个网址下载Http:/developer.A/sdk ,选择相应的系统进行安装。 第四步:安装 Android ADT 插件。 运行 Eclipse,选择 help-install new software 选择 add,将会弹出一个【 Add Site】对话框。 点击 OK,选择要安装的软件,占 next,然后选择接受协议,直到安装成功,重启 Eclipse软件,设置 Android SDK Home, Window-refrence。 设置 Android SDK Home 界面 在 SDK location中输入 SDK Tools路 D:AndroidsoftwareAndroid-sdk-windows 点击 OK,这样 Android 环境就 已经搭建成功了。 河北 xxxxxxxxxx 学院 第 21 页 共 42 页 4.3 Android 音乐播放器的工程 4.3.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),(如图 4.3.1模拟器)该模拟器是一款手机板的样式,拥有手机硬件的基本操作。我们也可以将右边的键盘通过代码属性设置将其隐藏,界面的大小可自由设定。 图 4.3.1 android 模拟器 4.3.2 Android 工程程序结构 河北 xxxxxxxxxx 学院 第 22 页 共 42 页 Android工程基本结构目录包括: src (源代码 )、 gen( Android 系统自动生成的常量)、 Res(资源文件):主要存放程序界面的布局配置( .xml)文件和图片资源。 AndroidMainfes.xml 是四大组件的驱动配置文件,有它的存在, Android程序的四大组件才可以正常的跳转。 Android 资源 的类型和布局 图 4.3.2 资源类型和布局图 下图 4-3-1 到图 4-3-4为音乐播放器代码结构和各界面的配置文件,图像资源等 ,图 4-3-1 为一个 Android工程所必须的结构,图 4-3-2为该播放器的 .Java文件,图 4-3-3为 该播放器的各种界面的布局配置文件,图 4-3-4为该播放器的图片资源。 图 4-3-1音乐播放器代码结构和各界面的配置文件 河北 xxxxxxxxxx 学院 第 23 页 共 42 页 图 4-3-2 图 4-3-3 图 4-3-4 4.3.3 AndroidManifest.xml 文件 Android系统的任何一个程序启动都需要 AndroidManifest.xml来启动程序,任何一个新建的工程目录都会自动生成一个 AndroidManifest.xml 文件,此配置文件是整个程序能够正常运行的核心,它里面包含了 Android SDK 的版本,程序运行的默认 Activity,当程序中的任何一个组件触发事件后,系统都会自动的去AndroidManifest.xml 中 寻 找 标 识 来 作 出 相 应 的 操 作 。 任 何 一 个AndroidManifest.Xml 文件的格式都应为: Android系统有一个编码的规定, 支持的编码是 utf-8,当程序中出现乱码是,我们须将其编码格式转化为 utf-8.在 AndroidManifest.xml 中会在第一行河北 xxxxxxxxxx 学院 第 24 页 共 42 页 声明一句: 。它是该系统支持的版本和 编 码 。 在 第 二 行 定 义 了 我 们 需 要 使 用 的 架 构 , 该 架 构 来 自xmlns:android=/apk/res/android xmlns(XML namespace)是一个命名空间,它就像一条河的源头一样能让我们找到系 统架构,每一个配置文件必须有这个 xmlns,否则程序中的所使用的所有资源将无法找到。 在 application 元素我们定义 android:icon=drawable/icon android:label=string/app_name, android: icon 是程序在手机中显示的图片,我们运用 drawable/icon 表示了对 res/drawable 目录下的 icon.png的引用。 string/app_name 表示了对 res/value 目录下 string.Xml 中定义的app_name参数的 引用。 这是系统确定的首先要启动的 Activity 是 WelcomingActivity。 在 intent-filter 选项中,有 action 和 category 等等属性,我们需要定义action 的值为 Aent.action.MAIN , category 的值为Aent.category.LAUNCHER,它们是系统的值,程序在解析到这些常用后就可以确定首先要启动的 Activity。当我们需要通过一个组件触发另一个组件时,我们将设定 action和 category的其它属 性值,系统会根据我们设定的属性值去 AndroidManifest.Xml 的 application 中寻找标识,任何一个 Activity 的action和 category 是唯一,所以程序在任何时候都能唯一启动一个 Activity,这样,不同的 Activity 之间的跳转就实现了。 在 AndroidManifest.Xml 中有一个根结点 ,它是我们需要定义的ADT 版本,例如我们将其值设定为 Android:minSdkVersion=10,则表示此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=Android.permission.INTERNET,我们就可以访问网络了。当然uses-permission 还有很多其它的权限,例如 GPS 定位权限,浏览器数据存取权限 com.Android.browser.permission.READ_HISTORY_BOOKMARKS 等等。 河北 xxxxxxxxxx 学院 第 25 页 共 42 页 当程序的任何一个组件要用到时,都必须在 AndroidManifest.Xml 文件中声明。四大组件要使用前都需要声明,其声明方式如下: 其中声明 provider 时还需要声明其授权 authorities。每个组件里面还有很多的属性,会根据程序的具体需要定义不同的属性。过滤器 intent-filter 有两种启动方式来启动界面: (1) 显示方式 显示方式是在代码中的直接启动组件,启动时会声明 Intent,在它的构造方法 Intent(组件 1,组件 2)中直接指定一个组件的名字 ,然后调用方法startIntent(intent)以启动指定的组件。 (2) 隐式方式 隐式方式是通过过滤器来过滤完成的,启动的组件必须满足 action 和category的条件才能够启动该组件。这些属性是在 AndroidManifest.Xml 文件中声明的。两种启动方式都可以通过程序 setAction( ACTION 常量)和startActivity( intent) 或配置文件两种方式来实现组件的跳转。 第 5章 系统功能详细设计 5.1 欢迎界面模块详细设计 在欢迎界面模块的设计中,应用了 LinearLayout布局和 Animation效果。 开机使用动画效果, 5张图片自动变换。 欢迎界面模块运行结果如图中部分图片。 河北 xxxxxxxxxx 学院 第 26 页 共 42 页 图 5 1 欢迎界面 ( 1) 页面设计 整体为 LinearLayout布局,其中包含两个 ImageView控件,设置两个图片为垂直布局。 本 LinearLayout 布局的 id值是 llSplash,背景颜色为“ #ffffffff” 。 ( 2) 代 码编写 欢迎界面模块主要是用于增强用户体验,让用户较容易接受本软件。在编写代码前,首先要定义一个 Animation 类对象,以便编写代码时调用该类中方法,主要代码如下: ha=new Handler(); ru=new Runnable() public void run() Intent intent=new Intent(); / 启动线程由欢迎界面跳往首页 intent.setClass(WelcomingActivity.this, MainActivity2.class); startActivity(intent); WelcomingActivity.this.finish(); overridePendingTransition(R.anim.in,R.anim.out ); ; 河北 xxxxxxxxxx 学院 第 27 页 共 42 页 delay.schedule(task, 1000*3 ); ha.postDelayed(ru, 3000);/延时跳转 FinalIntent dIntent=newIntent(this,MainActivity2.class); Timer delay = new Timer(); TimerTask task = new TimerTask() Override public void run() startActivity(dIntent); ; 5.2 主 界面模块详细设计 当欢迎界面过后,自动跳转到主界面。主界面模块运行结果如图 5-2所示。 图 5-2 主界面 ( 1)页面设计 当进入主界面,采用相对布局。 河北 xxxxxxxxxx 学院 第 28 页 共 42 页 删除标题,采用自定义布局。相应代码如下: requestWindowFeature(Window.FEATURE_NO_TITLE);/去掉标题栏 线性布局,文字和图片。如下代码: 登陆模块和播放模块采用网格布局。代码如下: int gridViewPic02=R.drawable.menu006,R.drawable.menu002; String gridViewText02=登录模块 ,播放模块 ; gridView02=(GridView) findViewById(R.id.gridview2); gridView02.setNumColumns(3);/功能菜单每行显示 3 gridView02.setHorizontalSpacing(20);/水平间距 20 gridView02.setVerticalSpacing(20);/垂直间距 20 gridView02.setOnItemClickListener(new OnItemClickListener() Override public void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) 河北 xxxxxxxxxx 学院 第 29 页 共 42 页 Intent intent=new Intent(); / TODO Auto-generated method stub switch (arg2) case 0: /由首界面跳转到正在播放界面 intent.setClass(MainActivity2.this, Login.class); startActivity(intent); break; case 1: /由首界面跳转到本地歌曲界面 intent.setClass(MainActivity2.this, TestMain.class); startActivity(intent); break; default: break; ); 5.3 播放列表 模块详细设计 ( 1)页面设计 播放列表界面 ,默认是 Tabhost,且此 Tabhost 包含 四 个选项卡,第一个则为 音乐播放列表 模块。 播放列表模块中是一个 ListView 控件, ListView 中的 item 采用 LinearLayout 布局,其中包含了歌曲名称信息、歌手名称信息和歌曲时长信息,此三项用 TextView 显示。 ( 2)界面功能的实现 最上面是 Tabhost 控件,设置 四 个选项卡。对应的代码如下: TabHost th = getTabHost(); View view1 = View.inflate(TestMain.this, R.layout.tabstyle, null); (ImageView)view1.findViewById(R.id.tabstyle_imageview).setIm河北 xxxxxxxxxx 学院 第 30 页 共 42 页 ageResource(R.drawable.menu1);/图片 (TextView)view1.findViewById(R.id.tabstyle_textview).setText(TAG1);/文字 th.addTab(th.newTabSpec(list).setIndicator(view1).setContent(this); view view2 = View.inflate(TestMain.this, R.layout.tabstyle, null); (ImageView)view2.findViewById(R.id.tabstyle_imageview).setImageResource(R.drawable.menu2);/图片 (TextView) view2.findViewById(R.id.tabstyle_textview).setText(TAG2);/文字 th.addTab(th.newTabSpec(artists).setIndicator(view2).setContent(this); View view3 = View.inflate(TestMain.this, R.layout.tabstyle, null); (ImageView)view3.findViewById(R.id.tabstyle_imageview).setImageResource(R.drawable.menu3);/图片 (TextView)view3.findViewById(R.id.tabstyle_textview).setText(TAG3);/文字 th.addTab(th.newTabSpec(albums).setIndicator(view3).setContent(this); View view4 = View.inflate(TestMain.this, R.layout.tabstyle, null); (ImageView)view4.findViewById(R.id.tabstyle_imageview).setImageResource(R.drawable.menu4);/图片 (TextView)view4.findViewById(R.id.tabstyle_textview).setText(TAG4);/文字 th.addTab(th.newTabSpec(recent).setIndicator(view4).setContent(this); Tabhost中的 ListView是通过 Layout布局文件产生。通过适配器 Adapter向其中添加详细的数据。 河北 xxxxxxxxxx 学院 第 31 页 共 42 页 播放列表界面(如图 5.3) 图 5.3 在 Android里面,有一个视图叫 ListView,其特点是一个有 BaseAdapter的属性,从下到下,或从左到右的显示方式。系统默认的方式每一行只显示一个 TextView,本播放列表实现了自定义的方式,刚 ListView的每一行显示一个音乐图片和一个歌曲名字。我们定义一个类 MusicAdapter 继承了 BaseAdapter,然后通过算法对这个适配器进行扩展,扩展成为第一行能显示一张图片和一个歌曲名字。由于 BaseAdapter是一个抽象类,我们需要实现里面的抽象方法 getView()。该方法返回一个 View,即视图。视图可以显示在 Activity上,所以就可以看到我们想要的歌曲列表界面。 ListView同样有一个监听器 new onItemClickListener() Override public void onItemClick(AdapterView arg0, View arg1, int arg2,long arg3) ,我们只要实现这个方法,就可以监听鼠标的点击事件,当鼠标点击到每一行时,可以通过ListView.getItemAtPositon(int position)得到该行上的信息。这样就可以通过 Intent将数据传入到其它的 Activity。本程序的思路是当鼠标点击一行,会跳转到另一个 Activity里面,这个Activity和歌曲列表类似,也是一个 ListView,该界面将在下一节介绍。 歌曲列表是从播放主界面跳转过来的,能跳到该歌曲列表是前提是数据有歌曲列表的存在。因为每次歌曲列表显示时会查询数据库中的歌曲列表。如果不存在刚会提示是空列表,选择到SDCard中添加歌曲 (如图 5.3.1) 河北 xxxxxxxxxx 学院 第 32 页 共 42 页 图 5.3.1 中间为一个 Dialog对话框,具有 Acitivty的属性,但是独立于界面的一个视图,该对话框中放置了一个布局文件。 Dialog的创建: AlertDialog.Builder, AlertDialog alert =builder.create();alert.show(); 该 Dialog上有两个菜单选项,第一个为“从 SD卡”,点击会跳转到 SDcard界面中。 5.4 歌曲播放模块详细设计 ( 1) 歌曲播放界面显示 该模块可以控制歌曲的播放进度,显示正在播放的歌曲的名称,单击进行上一首、下一首、暂停、播放等功能。界面如图 5-3所示。 河北 xxxxxxxxxx 学院 第 33 页 共 42 页 图 5-4 歌曲播放主界面 ( 2) 歌曲播放界面实现 该界面要到了较为复杂的布局,采用了多个 LinearLayout 布局和TextView、 SeekBar、 ImageButton 等控件。在 TextView 应用到了跑马灯效果,显示较长的歌曲名称。对 ImageButto控件设置了单击效果,重新定义了 SeekBar控件的风格,使得界面更加人性化,增强了用户体验。 设置 TextView 跑马灯效果的代码如下: android:singleLine=true android:ellipsize=marquee android:marqueeRepeatLimit=marquee_forever android:focusable=true 河北 xxxxxxxxxx 学院 第 34 页 共 42 页 android:focusableInTouchMode=true android:scrollHorizontally=true 自定义 SeekBar风格的代码如下: 5.5 会员登录模块详细设计 在会员登录模块中,用到了 Android 中 Dialog、 Button、 EditText、 TextView控件,并对 Button 控件添加点击效果,使操作更加个性化,增强用户体验。会员登录模块运行结果如图 5-5所示。 图 5-5 会员登录界面 河北 xxxxxxxxxx 学院 第 35 页 共 42 页 登陆成功后,会出现云播放列表 ,界面如图 5-5.1 所示。 图 5-5.1 云播放列表 界面 ( 1) 页面设计 采用 LinearLayout 布局,采用多个 Android控件和相关属性。相关属性代码如下: ( 2) 界面功能的实现 会员登录通过对数据库中的数据查询并匹配,如用户名和密码都正确,则登录成功进入到云播放列表模块,如果用户名或密码不正确,通过 Toast提示用户。对应的代码如下: public void onClick(View v) / TODO Auto-generated method stub if (validate() / 判断验证是不是成功了 if (login() / 判断登陆是不是成功了 Toast.makeText(Login.this, 登陆成功 Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Login.this, LoginMainActivity.class); startActivity(intent); else Toast.makeText(Login.this, 登陆失败,请重登 , Toast.LENGTH_SHORT).show(); Dialogshow(输入的用户名或密码有问题,请重来 ); /* 2 验证输入的用户名和密码对不对。 */ private boolean validate() String uname = username.getText().toString(); if (uname.equals() Dialogshow(用户名必须输入 ); 河北 xxxxxxxxxx 学院 第 37 页 共 42 页 return false; String pwd = password.getText().toString(); if (pwd.equals() Dialogshow(密码必须输入 ); return false; return true; / validate 5.6 会员注册模

温馨提示

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

评论

0/150

提交评论