1、 编 号: 审定成绩: 重庆邮电大学毕业设计(论文)设计(论文)题目:基于 Android 平台的跑酷游戏的设计与实现学 院 名 称 : 通信与信息工程学 生 姓 名 :专 业 : 通信工程班 级 :学 号 :指 导 教 师 :答辩组 负责人 :填表时间: 年 月重庆邮电大学教务处制重庆邮电大学本科毕业设计(论文)- I -摘 要移动互联网的迅猛发展使得手机游戏越来越多地占据人们的休闲娱乐生活。对于手机用户来说,人们可以随时随地拿出手机玩游戏,方便又快捷。在众多受欢迎的手机游戏中,3D 游戏占据绝大多数,其中跑酷游戏是风靡大街小巷的游戏之一。本文介绍了移动互联网的发展现状,描述了在此背景下手机
2、游戏及其现状,重点列举出 Android 手机游戏平台的优势及发展趋势,以及 Android 操作系统组成和特性。在此基础上介绍了游戏设计中使用的相关技术,包括游戏声音处理技术、OpenGL ES 开发 3D 效果技术、存储数据的 Preferences 等技术。本文给出了跑酷类游戏“Running The Ball”的总体方案设计,包括系统分析与架构、主要场景的绘制及实物运动、数据存储模块以及声音播放模块。为了简化设计,本游戏用一个小球来代替跑酷的主人公完成整个历险,采用 OpenGL ES 技术对小球进行纹理贴图,以便增加游戏的观赏性。同样采用此技术绘制出空心圆柱体作为小球运动的轨道。小球
3、运动应用了姿态传感器技术,自动检测手机方向发生的变化,采用 Preferences 将玩家游戏的得分存储并进行排名。开发完成后,先后在模拟器和 Android 手机上进行测试,其中在智能手机上进行安装、运行、卸载等一系列测试。经测试,该游戏的基本功能都可以实现。【关键词】 手机跑酷游戏 Android 平台 OpenGL ES 姿态传感器技术重庆邮电大学本科毕业设计(论文)- II -ABSTRACTWith the development of mobile Internet, mobile games play a more and more important role in peopl
4、es leisure and entertainment life.For mobile phone users, people can come up with mobile phone games anytime, conveniently and quickly. In many popular mobile phone games, 3D games occupy the vast majority, which Parkour game is one of the most popular games.This paper first introduces the mobile ga
5、me development status quo as well as the futural development trend of Android game, focusing on the mobile game process and module. Then the paper explains the Android platform, including the operating system and the characteristics, and introduces the current popular game type features and technolo
6、gy.On this basis,the paper introduces the related key technologies involved in the design of the game, including the game sound processing technology, OpenGL ES standard development of 3D technology, data storage preferences.Then, this paper presents the Parkour game “Running The Ball“ design and im
7、plementation, including system analysis and architecture, design and implementation of the game interface, main scene drawing and physical movement, data storage module and voice playing module. First of all, in order to simplify the design, this game uses a small ball instead of Parkour hero to com
8、plete the adventure. To enhance the viewing, the game use OpenGL ES technology to texture mapping of the small ball. The same technique is also used to draw the hollow cylinder as the track of the ball movement. The ball motion applies the attitude sensor technology, automatically detects the change
9、 of the mobile phone direction, using Preferences to store the players game and carring on the ranking.After the completion of the development, the first test of the game is on the simulator, and then the Android mobile phone was installed, running, unloading and a series of tests. After testing, th
10、e games basic functions can be achieved.【Key words】Mobile phone Parkour game Android platform OpenGL ES orientation sensor technology重庆邮电大学本科毕业设计(论文)- III -目 录前 言 1第一章 绪论 2第一节 移动互联网的发展现状 .2第二节 手机游戏 .2一、手机游戏概述 3二、手机游戏现状 3三、Android 手机游戏平台 .4第三节 本文研究的主要工作及意义 .5第四节 本文组织结构 .5第二章 Android 平台以及手机游戏开发相关技术 .7
11、第一节 Android 操作系统简介 7第二节 Android 操作系统框架结构 7一、应用程序 9二、应用层序框架 9三、系统库 9四、内核 10第三节 Android 手机游戏开发相关技术研究 10一、游戏声音处理技术 10二、存储简单数据的 Preferences 12三、OpenGL ES 技术 .12四、Android 中的静态图片访问 .14第四节 本章小结 .14第三章 游戏“Running The Ball” 总体方案设计 15第一节 “Running The Ball”需求分析 .15一、游戏功能需求 15二、游戏通用性需求 16第二节 “Running The Ball”的
12、总体设计 .17一、“Running The Ball”的设计目的 17二、“Running The Ball”游戏结构 17重庆邮电大学本科毕业设计(论文)- IV -第三节 游戏“Running The Ball” 的功能模块 .18第四节 本章小结 .20第四章 手机游戏“Running The Ball” 的详细设计与实现 21第一节 游戏的主流程 .21一、游戏的主流程图 21第二节 游戏“Running The Ball” 的准备工作 .21一、游戏开发环境的搭建 21二、Android 平台下的准备工作 .23第三节 游戏功能类设计 .23第四节 游戏核心处理模块的实现 .24一
13、、多线程技术和消息队列的应用 25第五节 图形模块的实现 .26一、绘图模块 26二、小球轨道的实现 27第六节 角色模块的实现 .28一、纹理贴图球体的构建 28二、小球运动 姿态传感器的应用 30三、障碍物的构建 31第七节 数据存储模块的实现 .31一、游戏数据库的设计 31二、游戏排名的实现 31第八节 声音播放模块的实现 .32第九节 本章小结 .33第五章 游戏测试 34第一节 游戏在模拟器上的测试 .34第二节 游戏测试过程 .35第三节 生成项目 Running The Ball.apk 文件 .36第四节 APK 文件在智能手机上的测试 37第五节 本章小结 .37结 论 3
14、8致 谢 39参考文献 40附 录 33重庆邮电大学本科毕业设计(论文)- V -一、英文原文 33二、英文翻译 39三、源程序: 44重庆邮电大学本科毕业设计(论文)- 1 -前 言Android 是基于 Linux 的操作系统,主要用于移动设备。自诞生以来,Android以其特有的开放性逐渐拥有很多“粉丝” ,应用也日益丰富。对于消费者而言,大家可以通过 Android 获取各种各样的软件资源。在丰富的 Android 应用中,手机游戏是不得不提及的一类应用。首先,手机游戏用户数量庞大。目前,全世界手机用户已有数十亿之多。因其用户群体巨大,手机游戏自然有着无可限量的发展潜力。其次,方便快捷
15、是手机游戏的又一大优点。人们可以随时随地拿出手机或移动设备玩游戏。随着手机游戏的发展,越来越多场景有趣,角色丰富的 3D 游戏出现在手机游戏的市场。一款优秀的手机游戏不仅仅是高超的技术手段,奇妙的创意,好看的界面也已经成为一款受欢迎的游戏的必备因素。Android 游戏未来的发展趋势包含以下几个方面:第一,采用通用化的引擎开发模式。由于游戏引擎开发技术难度大,维护成本高,所以会有一部分公司专门从事通用手机游戏引擎的开发。而其他手机游戏开发公司可以更加专注游戏策划方面。使得手机游戏开发更加规范高效。第二,3D 游戏引擎是未来的潮流。由于 OpenGL技术的强大性,各个平台都陆续开启了对该技术的支
16、持,在不久的未来,大型 3D场景游戏的开发将成为可能。3D 游戏具有更好的用户体验,而且硬件性能将会大幅度提升。第三,游戏引擎向着跨越 PC 机和手机移动平台方向发展。对于国内的手机游戏市场来说,3G 网络发展与三网融合实施将大大促进跨平台手机游戏发展,支持 Windows、 Linux、iPhone、Android、Symbian 和 Blackberry 的游戏引擎会成为未来的趋势。重庆邮电大学本科毕业设计(论文)- 2 -第一章 绪论第一节 移动互联网的发展现状移动互联网(Mobile Internet) ,就是把移动通信和互联网合为一体,是一种通过智能移动终端来获取服务的新兴业务。21
17、 世纪是信息爆炸的时代,人们渴望随时随地从互联网获取信息和服务,移动互联网应运而生并迅猛发展。在我国互联网的发展过程中,PC 互联网已日趋饱和,移动互联网却呈现爆发趋势。4G 时代的到来以及移动终端的设备成本越来越低势必将为移动互联网的发展注入更大的能量。移动互联网正逐渐渗透到人们的生活和工作中。图 1.1 显示了近些年移动互联网发展所处的阶段。当今新型的智能手机在满足通话和发送短信外,相比于之前,还包含了更多的多媒体娱乐功能,比如上网、社交、生活服务、游戏等等。图 1.1 近些年移动互联网发展所处阶段据 comScore 对苹果应用软件店一份全面研究报告中显示,人们在相关设备上使用最多的软件
18、是游戏,其中,游戏软件中 7075%为 3D 游戏软件。第二节 手机游戏重庆邮电大学本科毕业设计(论文)- 3 -一、手机游戏概述手机游戏(Mobile Game)是指安装在手机等智能终端上,用户可以随时随地玩的游戏。经历了多年的发展,手机游戏从最早最简单的模式发展到可下载、联网、多人联网,直到现在的高级的跨平台联网游戏的发展路径1。手机游戏按照种类可分为:RPG(角色扮演游戏) 、ACT (动作游戏) 、AVG(冒险游戏) 、SLG (策略游戏) 、FTG(格斗游戏) 、STG(射击类游戏)等多种类型2。图 1.2 所示即为百度移动应用搜索到的热门游戏。图 1.2 百度移动应用搜索手机游戏作
19、为十分受欢迎的应用程序,其具有如下特点: 用户数量十分巨大 全世界手机用户在不断增长中,我国已达到 6 亿,支持 Java 的手机正在快速的增加,Java 已经几乎成为行业的标准。手机游戏的市场潜力巨大。 方便快捷 人们可以随时随地拿出手机玩游戏,是放松心情和打发时间的首选。伴随着硬件设备的不断改良和技术的发展,手机游戏必将有着光明的发展前景和巨大的市场潜力。二、手机游戏现状近年来,游戏及其相关行业发展迅速。在韩国、日本等游戏发达国家,游戏产业已经成为国家的经济支柱产业之一,并且拥有很好的发展前景318。而手机游重庆邮电大学本科毕业设计(论文)- 4 -戏更因为其随时随地进行游戏的便利性成为游
20、戏界中一匹黑马脱颖而出。手机游戏的开发至关重要,我们的目标是以最少的开发人员、开发经费开发出质量高并且受用户喜爱的游戏。游戏吸引玩家的数量越多,说明该款游戏开发的越成功。一款好游戏可以带给玩家非常好游戏体验,包括视觉体验、听觉体验和触觉体验,游戏商家也会因此获益。一款手机游戏的成功靠的并不完全是技术手段的高超,而是游戏自身的创意、综合体验使玩家审美和艺术修养的提高19。三、Android 手机游戏平台Android 是由著名的互联网公司 Google 在 2007 年发布的一个平台。此平台是以Linux 内核为基础来构建的一个开源的手机操作系统平台。自从 Google 发布智能手机操作系统 A
21、ndroid 操作系统平台以来,Android 平台一直以惊人速度挺进,支持Android 的智能手机也迅速占领手机市场。游戏作为 Android 平台最主要的应用之一,随着 Android 手机用户数量的急速增长,基于 Android 平台的手机游戏在未来将有不可限量的市场发展潜力。这一切都与 Android 手机平台的优势密不可分。1.Android 手机平台的优势目前市场上主流的智能手机平台有:Windows Mobile、Symbian、iPhone OS、Android 等。Android 平台的优势主要体现在以下几个方面:(1) 开放性Android 平台是开放性的平台,允许任何移
22、动终端厂商加入到 Android 联盟中。显著的开放性使其拥有越来越多的开发者,随着用户和应用的日益丰富,Android 平台也逐渐走向成熟。(2) 丰富的硬件选择Android 平台还具有丰富的硬件选择,这一点与 Android 平台的开放性密不可分。由于 Android 的开放性,众多厂商纷纷推出功能各异的产品。功能上的差异并不会影响数据同步和软件兼容。(3) 开发手机软件不受限制Android 平台提供给第三方开发者一个宽泛、自由的环境,不会受到各种条条框框的限制。这给了开发者极大的自由,一些新颖别致的软件由此诞生。正因为 Android 平台有如此多的优越性,所以 2014 年末数据显
23、示,仅仅推出几年的 Android 操作系统已经跃居全球最受欢迎的智能手机平台。重庆邮电大学本科毕业设计(论文)- 5 -2.Android 手机未来发展趋势现如今,休闲类小型游戏占有了安卓游戏平台,此类游戏没有游戏引擎,虽然免费但是实用性不大,效率不高,所以还有很大的发展空间。 Android 游戏未来的发展趋势归纳起来主要有以下几点: (1) 采用通用化的引擎开发模式 由于游戏引擎开发技术难度大,维护成本高,所以会有一部公司专门从事通用手机游戏引擎的开发4。而其他手机游戏开发公司可以更加专注游戏策划方面。使得手机游戏开发更加规范高效。 (2) 3D 游戏引擎是未来潮流 3D 游戏由于有更好
24、的用户体验,而且硬件性能的大幅度提升, 3D 游戏引擎是未来的发展趋势。 (3) 游戏引擎向着跨越 PC 机和手机移动平台方向发展 对于国内的手机游戏市场来说,3G 网络发展与三网融合实施将大大促进跨平台手机游戏发展,支持 Windows、Linux、Mac OSX、iPhone 、Android、Symbian和 Blackberry 的游戏引擎会成为未来的趋势。第三节 本文研究的主要工作本文首先阐述了移动互联网的发展现状,介绍了在此背景下手机游戏的特点,并描述了 Android 平台的优势和 Android 游戏发展趋势。接着,本文介绍了 Android操作系统的特性和框架结构,然后重点分
25、析了 Android 游戏开发中涉及的几个关键技术,包括声音处理技术、OpenGL ES 3D 构建模型技术、Preferences 数据库等等,并且提出了 Android 游戏开发的基本框架。本文重点设计开发了“Running The Ball”游戏,首先讲述设计该游戏的目的,给出了该游戏的游戏结构和功能模块。然后分别实现了游戏的图形界面模块、控制调度模块、逻辑计算模块、数据存储模块、声音播放模块。在完成了游戏的开发之后,首先对该游戏在模拟器上进行了测试,接着把 APK文件放到智能手机上对游戏进行了各方面测试。重庆邮电大学本科毕业设计(论文)- 6 -第四节 本文组织结构本文主要由以下章节组
26、成:第一章:本文首先介绍了手机游戏及其发展现状,接着给出了手机游戏的流程和一般包含的模块。 第二章:简要的介绍了 Android 系统架构,好让读者对 Android 系统整体有一个大体的印象和概念。接着介绍了 Android 手机游戏开发中的相关技术,包括手机游戏开发平台 Android、游戏中的声音处理技术、Preferences 数据库和用来开发 3D效果的 OpenGL ES 基本技术。这些都是在本游戏的开发中涉及的到的技术。第三章:主要介绍了手机游戏 Running The Ball 的总体方案设计,本章首先对该游戏进行需求分析,接着给出游戏结构,最后给出游戏的功能模块并加以介绍。第
27、四章:本章在第三章介绍总体方案的基础上给出该游戏每个模块的具体实现,包含游戏核心模块、图形模块、角色模块、数据存储模块和声音播放模块。第五章:主要介绍了对游戏运行的模拟效果测试以及打包生成 APK 文件之后在真实的 Android 智能手机上进行游戏测试的过程,包括游戏的安装、运行、卸载以及游戏功能的测试。最后是全文总结,包含已做的工作以及可以改进的地方。重庆邮电大学本科毕业设计(论文)- 7 -第二章 Android 平台以及手机游戏开发相关技术第一节 Android 操作系统简介Android 是谷歌公司在 2007 年宣布的手机操作系统512,号称首个为移动终端打造的真正开放和完整的移动
28、软件。Android 作为谷歌公司企业战略的重要组成,会进一步推进“随时随地为每个人提供信息”这一目标的实现,并最终能让移动设备不依赖于设备甚至平台6 。第二节 Android 操作系统框架结构Android 软件层次结构自上而下分别是:应用程序(Application)、应用程序框架(Application Framework)、各种库(Libraries)和 Android 运行环境(RunTime)、Linux 内核(Linux Kernel)。图 2.1 为 Android 操作系统的架构模型。重庆邮电大学本科毕业设计(论文)- 8 -图 2.1 Android 的架构模型Androi
29、d 操作系统主要包括以下部分: 应用框架:用来开发可重用可替代的组件。 Dalvik 虚拟机:该虚拟机在保证 API 兼容的同时针对移动手机进行了大幅优化,使其占用资源更小,从而运行效率更高7。 集成的浏览器:基于开源的引擎 WebKit。 优化的图形:强大的自定义二维图形库。基于 OpenGL ES 1.0 标准的 3D 图形功能,在 3D 游戏开发中具有举足轻重的地位。 SQLite 数据库:SQLite 提供结构化的数据存储。它是一款轻量级数据库,能占用较小的内存进行较快的处理,还支持事务处理功能等优点。 多媒体支持:支持各种通用的音视频和静态图像格式(MPEG4、MP3、JPG、PNG
30、、GIF、AAC、H.264、AMR)。 GSM 技术:(依赖硬件)全球移动通讯系统,俗称全球通,是当前应用最广泛的移动电话标准8。为了让全球各地共同使用一个移动电话网络标准,让用户使用一部手机就能行遍全球。 蓝牙,EDGE ,3G,and Wi-Fi:(依赖硬件)蓝牙和 Wi-Fi 都是一种短距离的无线连接技术,在短距离内可以实现话音和数据的无线传输。EDGE(Enhanced Data Rate for GSM Evolution),是增强型数据速率 GSM 演进技术。 Camera,GPS,Compass,and Accelerometer :(依赖硬件)GPS(Global Posit
31、ioning System),即全球定位系统。它是一个覆盖全球的卫星系统,由 24 颗卫星组成。 Compass 是一个 Java 搜索引擎框架,具有开放源代码的优点。 重庆邮电大学本科毕业设计(论文)- 9 - 强大的开发环境:包含设备模拟器,调试的工具,内存和性能检测部分,Eclipse IDE 的开发插件。Eclipse 是个集成开发环境。一、应用程序所有的应用程序都是由 Java 语言完成的。应用程序没有界限,体现在我们可以在平等条件下创建,还可以轻松地嵌入 Web,也可以并行运行。二、应用层序框架Android 应用程序通常都由各种组件构成,少则一个,多则很多个。APIs 事实上是应
32、用程序的框架,是由 Android 的应用程序框架为开发者提供。上层的应用程序都是由 Java 创建的,因此本层次提供的首先包含了 UI 程序中所需要的各种控件,例如:Views( 视图组件)包括 lists(列表),grids( 栅格 ),text boxes(文本框),buttons(按钮) 等。甚至一个嵌入式的 Web 浏览器。 创建一个 Android 应用程序可以利用以下几个部分,以下几部分都属于应用程序的框架:Activity( 活动) 、Broadcast Receiver(广播接收者)、Service( 服务)和 Content Provider(内容提供者 )15。三、系统库
33、上面介绍的应用程序框架是接近应用程序的软件服务,与之区别的 Android 函数库是在更底层,支撑着应用程序的框架9,图 2.2 所示即为系统库。S u r f a c e M a n a g e rM e d i a F r a m e w o r kS Q L i t eO p e n G L E SF r e e T y p e W e b K i tS G LS S LL i b cL I B R A R I E S图 2.2 系统库重庆邮电大学本科毕业设计(论文)- 10 -由图可知,系统库主要由以下部分构成: 媒体函数库:是在 OpenCORE 的基础上发展而成的,为我们播放、录制
34、多种常见的影音格式提供了很多便利。 Surface Manager:是负责合成 2D 和 3D 绘图的软件10。 WebKit:是一种开源的软件引擎,属于一个网页浏览器。 OpenGL ES:Android 依据 OpenGL ES1.0API 标准来实现 3D 绘图函数库。既可以通过软件执行,也可以用硬件加速方式执行。其在 3D 软件光栅处理方面进行了高度优化。 FreeType:这个库提供位图、向量字的绘图显示。 SSL(媒体框架):用来提供各种音频、视频支持。Android 支持多种音频、视频等静态图像格式。 SQLite:是一套轻量级的数据库引擎。 Libc :提供一套 C 库。 SG
35、L:用来提供 Android 在 2D 绘图方面的绘图引擎。四、内核Android 使用 Linux2.6 版的内核来提供系统的核心服务,这是 Android 平台开放性的基础。它包含显示驱动(Display Driver)、Flash 内存驱动(Flash Memory Driver)、摄像头驱动(Camera Driver)、音频驱动(Audio Driver) 、Wi-Fi 驱动(Camera Driver)、键盘驱动(KeyBoard Driver)、蓝牙驱动(Bluetooth Driver)、Binder IPC 驱动。Linux 内核是硬件与软件的桥梁。对于软件开发者来说,我们不
36、必关心内核的底层实现,只需要投入到上层软件的开发中。底层的工作都要有 Google 和手机开发商完成,比如说更新驱动、编写新硬件的驱动等等工作。第三节 Android 手机游戏开发相关技术研究本节主要介绍所设计的游戏中涉及到的相关技术,如游戏声音处理技术、Android 的数据库管理系统 Preferences 以及 OpenGL ES 关键技术。一、游戏声音处理技术1.即时声音处理技术即时音效,从字面上看来就是比较短,比较快的音效。这一类的音效特性要求重庆邮电大学本科毕业设计(论文)- 11 -必须采用反应迅速的音效,不能采用播放较长时间音乐的播放技术,采用android.media.Sou
37、ndPool 类实现。SoundPool 类是在 SDK 的 android.media.SoundPool 中,顾名思义就是声音池的意思。它主要用来播放短的声音片段,这些片段可以从程序资源或者文件系统中加载。占据较少的 CPU 资源以及较短的反应延迟,MediaPlayer 类可以实现。考虑对性能的影响,我们一般只使用少于 7 秒的声音文件。SoundPool 类相比于其他声音播放类来说具有自行设置声音品质、音量、播放比率参数的特点。它可以同时管理多个音频流,每个音频流有自己的 ID,音频流的管理是由 ID 来进行。应用中的音频效果(语音提示,短信等)或密集的短的游戏声音(如许多物体同时爆炸
38、)可以使用 SoundPool 类。在使用 SoundPool 类播放文件前首先要得到一个 SoundPool 类的对象。我们可以通过它的构造方法 public SoundPool(int maxStreams,int streamType,int srcQuality)得到其对象,下面将介绍构造方法中各个参数的主要作用:maxStreams:该参数用于设定同时播放多少首音效,设置为 3 时表示最多可以同时播放 3 首音效;streamType:该参数用于设定音频类型,一般设STREAM_MUSIC;srcQuality:该参数用于音频质量设置,开始时默认为 0。有了SoundPool 类对象
39、之后,就可以将音频文件加载到这个对象中。接着需要从资源或者文件中加载音频文件流,可以用 public int load(Context context,int resId,int priority) ,下面将介绍加载方法中各个参数的作用:context:该参数是应用程序的上下文,就是当前的 Activity,即为谁来调用这个方法;resId:该参数为给出资源的 ID;priority:该参数代表优先级,目前还没有作用,设置为1,以便和未来的方法兼容。下面就可以播放声音了,可以通过 public final int play(int soundID,float leftVolume,float
40、rightVolume,int priority,int loop,float rate)方法播放音效,下面将介绍方法中各参数的作用:soundID:是播放的音乐 ID;leftVolume :是用来控制左声道音量;rightVolume:用来控制右声道音量;priority:优先级,0 为最低;loop:是循环次数,0 为不循环,-1 为永远循环; rate:回放音效的速度,一般来说处于 0.5 至 2 之间。播放时可以通过 public final void pause(int streamID)方法暂停播放音乐,其中参数 streamID 代表音效 ID。2.背景音乐播放技术背景音乐播放
41、时间通常来说比较长,而且文件相对较大。这类资源如果存放在内存中会给本身就紧缺的硬件资源造成负担。放在内存中会使调用时的播放速度加快,但是时间长的音乐文件作为背景音乐播放时对速度并没有很高的要求。重庆邮电大学本科毕业设计(论文)- 12 -Android.media.MediaPlayer 类是 Android 中用来控制音频以及视频的类。这个类的应用可以轻松实现音频处理。在 Android 手机上,我们也可以通过 Android SDK管理界面来管理手机的声音模式的规模,调整声音设置,这是 Android 中的AudioManager,其位于 android.Media 包中,主要提供访问控制
42、音量和铃声模式的操作。AudioManager 设置声音模式、调整声音大小的主要方法有:getMode():返回当前音频模式;getRingerMode() :返回当前的铃声模式; getStreamVolume(int streamType):获取当前手机音量,最大值为 7,最小值为 0,当为 0 时,手机自动将模式调整为“震动” ;setRingerMode(int ringerMode) :改变铃声的模式。 二、存储简单数据的 Preferences最常见的数据库是轻量级数据库 SQLite,其对于处理数据量较多的数据和存储较大的文件来说是很好的选择。但当我们需要存储简单的数据,比如字符
43、串,这就需要另一种存储机制Preferences10。Preferences 是一种轻量级的数据存储机制,对于 boolen、int、float 、long 和string 等数据,存储时以键值对的形式放在 Preferences 目录中,该目录位于(datadata包名shared_prefs)中。由于游戏中的得分数据量很小,使用 Preferences可以带来很多好处,首先相比于 SQLite 这种数据库,Preferences 系统开销会小很多,其次使用 Preferences 简单、便捷。三、OpenGL ES 技术OpenGL 是 SGI 公司开发的一套三维图形软件接口标准,具有结构
44、简单合理,操作方便等优点。目前,它已成为三维图形接口标准,并在不同的平台上得以实现。OpenGL ES 就是众多版本中的一个子集10 。1.OpenGL ES 技术的简介OpenGL ES( OpenGL for Embedded Systems 的简称)是专门为内嵌和移动设备设计的一个 2D/3D 的轻量图形库,OpenGL 是一种三维图形 API 的子集,是根据手持和移动平台的特点为 OpenGL3D 图形 API 标准定制的。OpenGL ES 标准在渲染 3D 场景的同时也能起到降低功耗的效果。OpenGL ES基本上是 OpenGL1.3 的子集,同时加入了一些扩展元素。这使该 AP
45、I 更加灵活。例如现在用不到的功能可以先暂时性删除,当内存硬件发展到一定水平之后,再将相应的功能添加进来。目前 OpenGL ES 主要包含了两个方面的基本内容:Common Profile 支持全 3D重庆邮电大学本科毕业设计(论文)- 13 -功能,以保证游戏可以正常运行;Safety Critical Profile 是商业软件设计所需要的,在这里不考虑华丽的界面,安全性才是更重要的。2.OpenGL ES 三角形Vertex 是 3D 模型的最基本单位,代表三维空间中的一个点,称为顶点。通过vertex 可以构建简单的二维图形,进而在二维图形的基础上搭建复杂的三维立体模型。由几何知识可
46、知,多边形是由很多点构成的,而三维立体模型是由多个多边形组成的。尽管 OpenGL 支持多种多边形,但 OpenGL ES 目前只支持三角形。但是从性能上来讲,支持三角形的效果和支持其他多边形没有多大的区别,因为任何多边形都可以通过不同方式拆分成多个三角形。OpenGL ES 采用三维笛卡尔坐标系,图 2.3 所示即为三维笛卡尔坐标系。开发的 3D 场景都要与这个坐标系相对应,场景内构建的所有或者部分物体的顶点的X、Y、 Z 坐标值以顶点数组的形式给出。当场景中有 n 个顶点时,坐标值有 3n 个,顶点数组的尺寸为 3n。前面已经提到过,OpenGL ES 中只允许使用三角形进行图形拆分。如图
47、 2.4 给出的示意图,清楚地给出了用平面三角形搭建的立体模型的原理。图 2.3 三维笛卡尔坐标系 图 2.4 长方体示意图 图 2.4 所示这是一个长方体,共有六个面,每个面被分割成两个三角形。在OpenGL ES 中,一个长方体可以由 12 个三角形搭建而成。其他形状的立体模型都可以通过三角形来搭建。OpenGL ES 中有一项功能是背面剪裁。当打开背面剪裁功能之后,视角在一个三角形背面时不渲染此三角形,就看不到这个三角形。这个功能可以大大提高渲染效率。因此,确定在既定的观察方向上渲染三角形十分重要,否则可能会看不到三角形的图像。那么如何确定三角形的正反面呢?当面对一个三角形时,若顶点的顺
48、序时逆时针则位于三角形的正面,顶点的顺序是顺时针就是位于三角形的反面。图2.5 所示即为确定三角形正面的方法。重庆邮电大学本科毕业设计(论文)- 14 -图 2.5 三角形的卷绕四、Android 中的静态图片访问Android 中静态图片的操作是通过使用 Drawable 类实现的。Drawable 类有很多子类,如 BitmapDrawable 用来操作位图;ColorDrawable 用来操作颜色;ShapeDrawable 用来操作各种形状。 实例化 Drawable 对象有以下方法:一是直接用保存在工程中的图片文件;二是使用 XML 文件定义 Drawable 属性。 最简单的方法是
49、将图片保存在工程的资源文件,它会自动创建在 R 类的参考,然后可以通过 R.drawable.my_image 使用图片对象,还可以通过使用 XML 文件来定义属性,如图像的应用,可以在布局文件中定义图标。如下所示:android:icon=“drawable/logo“ /logo 便是游戏的图标。 第四节 本章小结本章介绍了目前市场上的主流手机平台Android 平台。简要地介绍了 Android操作系统特性、操作系统框架。通过对 Android 操作系统的大概介绍,好让读者对Android 系统整体有一个大体的印象和概念,以便接下来更好的理解 Android 手机游戏开发中的关键技术。接着本章介绍了 Android 手机游戏开发中的一些关键技术,包括游戏中的声音处理技术、Preferences 和用来开发 3D 效果的 OpenGL ES 基本技术。这些都是在本游戏开发中涉及到的技术。重庆邮电大学本科毕业设计(论文)- 15 -第三章 游戏“Running The Ball”总体设