版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计学生姓名1学院1专业1班级1学号1指导教师辉年月日盐城师范学院毕业设计面向Android的智能宝宝游戏设计与开发摘要在以网络为核心的信息时代,面向移动平台的游戏开发是互联网开发领域的热门技术,具有很高的普及率。课题基于Android智能终端,以Myclipse为集成开发环境,采用语音识别、多线程、异步图形加载及传感器技术,设计并实现了一款智能宝宝益智游戏原型。在具备丰富视觉体验的同时,具有流畅的速度和较好的易用性、交互性和可移植性。为在智能移动平台上开发此类游戏提供了有价值的参考。【关键词】Android;手机游戏;传感器;语音识别DesignanddevelopmentforAndroidsmartbabygameAbstractIntheinformationage,networkasthecoreforthemobileplatformgamedevelopmentisahottechnologyinthefieldofInternetdevelopment,hastheveryhighpenetrationrate.ProjectbasedonAndroidintelligentterminal,withMyclipseforintegrateddevelopmentenvironment,theadoptionofspeechrecognition,multithreading,asynchronousgraphicsloadingandsensortechnology,designedandimplementedasmartbabypuzzlesprototype.Whilerichvisualexperience,hasasmoothspeedandgoodusability,interoperabilityandportability.Forsuchgamesinintelligentmobileplatformdevelopmentprovidesavaluablereference.[Keywords]Android;mobilegame;sensor;Speechrecognition第第页共19页目录1绪论 31.1研究背景 31.2研究意义 31.3研究目的及主要内容 32系统开发环境 42.1开发系统 42.2开发工具 42.3Android开发环境搭建的步骤 42.4ADT简介 52.5Android应用程序的基本组件 53关键技术 63.1传感器 63.1.1传感器的原理 63.1.2传感器在手机中的应用 63.2语音识别技术 73.2.1语音识别原理 73.2.2语音识别技术 73.3图形绘制 94游戏分析 94.1可行性分析 94.1.1技术可行性 94.1.2社会因素可行性 104.2游戏功能分析 104.2.1功能模块分析 104.2.2功能结构分析 114.2.3功能交互分析 125游戏功能模块的设计与实现 125.1日常体验模块实现 125.2距离响应模块实现 145.3语音交谈模块实现 155.4隐藏属性的实现 175.5系统运行维护 185.6APK文件的发布 196总结 19参考文献 20致谢 211绪论1.1研究背景随着移动终端的智能化,现代都市人对手机的要求越发增强。市面的智能手机各式各样,操作系统也不尽相同。而其中Android由于自身良好的交互性和可操作性成为智能手机的主流操作系统[1]。Android采用的操作系统是嵌入式的,凭借其开放性、无管理商制约、硬件选择丰富、无开发商制约、Google应用结合完美五大特色优势,吸引诸多开发商投身其中,以华为、联想、小米为代表的国产品牌阵营和以三星为代表的国外品牌。据最新统计报告,Android智能手机的销量在智能手机市场的占比要远远高于苹果iOS及微软WindowsPhone系统的市场份额。当Android系统的需求逐渐增强时,Android系统的应用开发需求也一定会越来越大,想必也一定会吸引更多的开发商和开发爱好者去创造有意义的应用[2]。1.2研究意义从2014下半年开始,随着手机游戏市场集中化程度的提高和洗牌的开始。人们开始注意细分游戏市场的价值。养成、塔防、卡牌等类型游戏都在被逐渐细化,人们更加注重自身对精品游戏的需求。而每一个Android手机的使用者,都是手机游戏的需求者,都是潜在的目标用户[3]。随着Android手机市场的扩大和手机游戏市场的细分化,势必要响应各类用户的游戏需求,所以游戏的市场容量将呈现不断上涨趋势[4],这其中以面向特定群体的益智类游戏市场占有率最大。1.3研究目的及主要内容益智类游戏以其轻松活泼的风格、有趣丰富的设定,在手机游戏中一直占据主流游戏的地位。益智类游戏操作简单,在手机游戏中比较流行。通过有趣的人物设计、简单的逻辑功能,然后基于真实生活的模拟,带给用户强烈的交互性和代入感。基于对Android平台游戏开发的深入了解,结合现有技术基础,设计了一个基于Android平台的益智类游戏原型。主要包含游戏感应器的实现、智能语音的识别、图形绘制技术和游戏界面的精致设计。2系统开发环境2.1开发系统Android支持跨平台开发,由操作系统、中间件、应用程序三个部分组成,采用软件堆层的架构方式将系统分为三个层面:底层、中间层以及最上面的应用层。底层提供一些基本的功能[5]。中间层主要包含一些重要的函数库和虚拟机。最上层的应用层是各种程序组件[6]。2.2开发工具编程工具:(1)MyEclipse:结合PhoneGap移动技术,实现移动应用的开发。不再需要学习新的开发语言和工具,轻松进行JavaWeb开发[7]。无论开发桌面的Web应用,还是移动Web应用MyEclipse都有足够强大的功能去实现下一代前端开发,并且支持连接到云服务[8]。(2)ADT:基于Myclipse的Android开发工具扩展包;(3)AndroidSDK:是开发工程师去建立软件而所需的一种开发工具。2.3Android开发环境搭建的步骤首先要下载所需要的开发工具,名称及下载网址如表2-1所示。表2-1Android开发所需的软件及下载地址软件名称下载地址本书使用的版本JDKJDK7MyclipseMyclipseIDEforDevelpers(4.2)AndroidSDKhttp://www.AAndroid4.2SDKADT/Android/eclipse/Android/eclipseADT21.0.1JDK:是java的核心,包括java的运行环境(JavaRuntimeEnvirnment)、类库以及java开发工具等。Eclipse:是一个IDE集成开发环境,有两个版本:EclipseClassicx.x.x版本,EclipseIDEforjavaEE版本。这两个版本没有什么本质上的区别,前者是后者的子集,只是后者包含较多的包。AndriodSDK:Andriod开发工具包,内含Andriod虚拟设备(模拟器)。2.4ADT简介ADT(AndroidDevelopmentTools)是一个可以集成在MyEclipse中的开发插件,为Andriod提供专属开发环境。2.5Android应用程序的基本组件Android系统架构分为四层,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层。系统框架图如图2-1所示。图2-1Android系统架构图Android系统的应用程序层大部分由Java语言编写。应用程序框架层是Android系统的基础结构,为开发人员提供直接的组件,加快了对应用程序的开发[9]。系统运行库层主要作用是搭建应用程序框架。Linux内核层包含安全性、内存管理、进程管理、网路协议以及驱动模型等服务[10]。3关键技术3.1传感器3.1.1传感器的原理传感器是一种检测装置,英文名为transducernsor。作为自动化实现最为重要的一个环节,传感器具备微型化、数字化、智能化等多种特性[11]。敏感元件、转换元件、变换电路、辅助电源四部分构成了传感器。四个部分各包含不同的内容以及不同的功能。敏感元件功能:直接接收测量,输出被测量有关的物理量信;转换元件功能:物理量信号转换为电信号,物理信号来自于将敏感元件;变换电路功能:用于将转换元件输出电信号进行放大、调制等处理;辅助电源功能:为系统(主要是敏感元件和转换元件)提供能量。传感器原理如图3-1所示。图3-1传感器原理图3.1.2传感器在手机中的应用智能手机的很多功能都是利用传感器来实现的,主流传感器有如下几种:(1)触摸传感器,例如用户通过按钮不同状态变化,响应手机功能;(2)重力传感器,多被一些竞技类游戏采用;(3)加速度传感器,例如微信中的“摇一摇”功能;(4)光线传感器,当用户所在环境变暗时,手机的亮度也会随之变暗;(5)距离传感器,当用户在接电话时,耳朵有时会触发错误界面,这时会将屏幕锁定黑掉,防止用户错误操作。在Android应用程序中,主要通过Android.hardware.SensorEventListener接口来实现传感功能。从而监听各种事件。针对游戏内容,主要研究重力传感器和距离传感器。(1)重力传感器在描述重力传感器之前,先要对Android坐标系统做一个说明。在Android坐标系统中,屏幕水平方向从左向右的规定为X轴。水平放置手机较短的一边,垂直放置手机较长的一边。屏幕左下角开始垂直方向指向顶端的规定为Y轴。当手机水平放置在桌上时,指向上方的是Z轴。在重力传感器中,values数组中三个元素分别表示了X、Y、Z轴的重力大小。当手机在水平桌子上从左向右移动时,values[0]呈现负值;从右向左移动时,values[0]呈现正值。(2)距离传感器距离传感器以cm为单位。有远和近两钟状态。距离传感器一般用于用户打电话时,防止用户误操作,一般将屏幕锁定关闭,给予用户更好的用户体验。红外LED灯发射红外线,被近距离物体反射后,红外探测器通过接收到红外线的强度,测定距离,一般有效距离在10cm内。在距离传感器的应用中,首先拿到这测距离变化的距离,floatdistance=event.values[0]。然后,检测这次距离变化和上次距离变化时间差,如果小于系统设置的阈值,则不会去熄灭屏幕。如果过于频繁则直接被操作系统所忽略。3.2语音识别技术3.2.1语音识别原理Android中主要通过RecognizerIntent来实现语音识别。语音识别功能主要原理:首先,将用户录制的语音发送到google云端;然后,通过云端处理技术,匹配到相应的数据;最后,发送到客户端,响应用户对游戏人物的交互操作。3.2.2语音识别技术Android语音识别过程与人对语音识别处理的过程基本上是一致的。它实际上是一种模式识别系统,和常规的模式系统一样,有特征提取、模式匹配、参考模式库等三个基本单元。实现步骤分前端处理、声学模型与模式匹配和语言处理三个通用步骤。即先识别语音信号,从中提取特征参数(有效数据)表示基本语音;然后根据获取的特征标识进行学习匹配最终产生对应算法;最后根据分析结果产生最佳声学模型,经过语法、语义分析,实现语音识别功能。具体实现语音识别的结构流程如图3-2所示。图3-2语音识别原理图Android应用系统中实现语音识别的流程:(1)使用intent调用语音识别程序使用前需要安装语音识别程序如语音搜索。在应用程序中使用intent来调出语言识别界面,录音并识别后将识别的字串返回给应用程序。步骤1:通过intent传递语音识别的模式:Intentintent=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);步骤2:开始语言模式和自由形式的语音识别:Intent.putExtra(RecognizerInter.EXTRA_LANGUAGE_MODEL.RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);步骤3:设置语言库:intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,Locale.CHINA.toString()));步骤4:执行intent,语音识别:IntentputExtra(RecognizerIntent.EXTRA.PROMPT.“请你语音”);步骤5:开始语音:startActivityForResult(intent,1234);RecognizerIntent包括的常量如表3-1所示。表3-1RecognizerIntent常量常量描述ACTION_RECOGNIZE_SPEECH开启语音活动ACTION_WEB_SEARCH开启网络语音模式EXTRA_LANGUAGE可以理解为设置一个语言库EXTRA_LANGUAGE-MODEL语音识别模式EXTRA_MAX_RESULTS返回的最大结果EXTRA_PROMPT请用户语音EXTRA_RESULTS将字符串返回一个ArrayList中LANGUAGE_MODEL_FREE_FORM在一种语言模式上自由搜索LANGUAGE_MODEL_WEB_SEARCH使用语言模型在Web上搜索RESULT_AUDIO_ERROR音频有问题RESULT_CLIENT_ERROR客户端有问题RESULT_NETWORK_ERROR网络有问题RESULT_NO_MATCH没有检测到语音的错误RESULT_SERVER_ERROR服务器有问题(2)使用Service调用语音识别程序在使用使用Service调用语音识别程序时,要安装语音识别服务。然后调用语言识别功能,最后,通过Listener,将录音后被识别的字符串发送给相应的应用程序。步骤1:初始化识别工具,得到句柄:SpeechRecognizersr=SpeechRecognizer.createSpeechRecoginzer(this);步骤2:注册回调类及函数:sr.setRecognitionListener(newlistener());步骤3:开始监听:sr.startListening(newintent(Recognizerintent.ACTION_RECOGNIZE_SPEECH));3.3图形绘制Android中利用Canvas类进行图形绘制。可以将这个类看做平时生活中的画板,可以发挥想象力,进行各种有趣的创作。Canvas类一种用户画图的API,系统提供给它的一块内存区域。并且提供了一整套方法可以对这块内存进行操作。用户可以自由创作,对这块画板进行无限制、无拘束的操作。其中,有两种画图的环境方式:(1)普通View的canvas。适用于工作量小,对品质要求低的工作。(2)SurfaceView的canvas。在SurfaceView通过线程来完成画图工作,适用于工作量大,对品质要求的高的工作。4游戏分析4.1可行性分析4.1.1技术可行性因为Android是向下兼容的,所以在开发上选择了兼容性比较强的Android4.0版本,也就是说市面上70%以上的Android手机都能够很好的兼容这款应用。在传感器上方面,对于市面上绝大多数Android手机都具备重力传感器,而在千元以上智能机上面也具备距离感应器,包括前置摄像头,所以在传感器上层面,应用做到了贴合大众的要求。4.1.2社会因素可行性(1)法律因素。该项目为独立开发,使用的开发软件均为正版软件,系统开发中的一切行为均在复合国家法律规定的范围内发生。(2)用户使用。在项目的开发中,将游戏界面设计的清新简洁,风格设定轻松活泼,以增强用户的交互性。使用户体验流畅、有意义,方便用户操作。在用户的操作使用上,具备可行性条件。4.2游戏功能分析4.2.1功能模块分析(1)智能成长模式。用户通过操作不同的组件来控制智能宝宝的心情的增长和降低。实现方式:不同的用户操作通过监听器的触发传递参数给心情控制面板,心情控制面板通过消息队列的方式对心情界面进行更新,来表示心情值的变化。(2)智能传感模式用户通过操作手机倾斜使手机中气泡根据用户倾斜幅度进行游动,并且在用户触摸后会发生爆炸并发出爆炸声。实现方式:智能宝宝收集重力传感器x轴和y轴数据,将其加入气泡位移的线性方程中,通过最简单的函数来控制在不同角度下气泡的游动幅度来达到智能传感的效果,并简化代码。(3)智能识别模式。智能宝宝通过对感应器数据的分析对用户所做操作进行判断,执行相应的功能。实现方式:通过监听距离传感器在固定时间内的x轴值的变化量来判断是否进行下一步操作。(4)自由画板。用户通过点击画笔进入自由画板功能,在自由画板中用户可以画出任意的线条。实现方式:用户点击按钮跳转到画板中,通过触摸感应时间来获取手指滑动坐标,通过新建路径来绘制线条并通过draw方法绘制到手机屏幕上,通过bitmap来保存画布和图案。4.2.2功能结构分析游戏主要由主界面、游戏界面、设置界面、商城界面四个部分组成。在游戏界面中又分为单个游戏界面和绘画界面;设置界面主要分布一些设置按钮和功能简介;而商城界面主要提供一个购买链接,方便用户对于一些装备的购买。系统功能结构设计图如图4-1所示。图4-1系统功能结构设计图游戏功能分析表如表4-1所示。表4-1游戏功能分析表界面操作表现方式主界面按钮跳转通过按钮的监听事件使go、shop、more指向三个不同的activity。设置界面白云浮动通过消息队列的方式控制白云从不同位置出现以不同的速度运动。音乐控制通过musicplayer类实现对背景音乐的播放。音效控制通过sundplpyer类实现对音效的播放控制。游戏界面照片移动通过点击相应的照片来移动他们,达到预定位置后回到固定位置。扫地通过点击水桶使智能宝宝去扫地,并重复这个动作同时损失心情值。心情变化每个不同的动作都将传递值给心情使心情值随之升高或者降低。绘画通过面板上的绘画按钮进入绘画界面,手指滑动即可作画。气泡在心情值降低至一定程度时气泡按钮出现,点击破碎并增加心情值。丢大便通过点击按钮进行控制,点击次数越多数量越多不会增加心情值。踢足球通过滑动屏幕进行控制,触发成功增加心情值。链接跳转当点击商城按钮时程序将打开默认浏览器跳转向外链地址。4.2.3功能交互分析该游戏的智能体现在当用户让智能宝宝去扫地的次数达到5次以上时,位于游戏左上角的表示心情的进度条将会掉至0点,并且智能宝宝将会拒绝再次扫地。而心情值是通过一个参数计算的,这个参数最大值为5,当参数大于5时将不再增长。通过控制imagebutton中的Visible属性,用户点击屏幕后会出现“扔大便”“踢球”“冒气泡”这三个imagebutton。当用户选择扔大便时,屏幕上就会出现一坨大便,并且用户点击次数越多,大便的数量越多,智能宝宝的心情值也会将为0;当用户点击踢球时,智能宝宝开始踢球运动,心情值会增加;当用户点击冒气泡时,智能宝宝被提示开始打扫房间,心情值变低,当房间打扫完成,智能宝宝心情值开始增加。关于扔大便效果,是通过一个数组储存一组图片,其中大便的数量是递增的,随着点击次数的增加,大便数量也会不断的增加,与此同时,计数器开始传递一个参数给心情值,使心情值显变低。关于冒气泡,当用户点击气泡按钮时,屏幕上将会出现一个气泡,这个气泡是通过感应器的管理类来获取的重力感应数据,然后通过函数的计算体现到屏幕上,从而达到随着屏幕晃动而晃动的效果。当用户强烈点击气泡时,触发监听器运行xml格式动画,演示气泡破裂效果。同时,计数器开始传递一个参数给心情值,使心情值显变低。关于踢球,用户用手指滑动皮球时被onTouchEvent捕获,并由新线程来操作皮球向着用户滑动的方向滚动,当皮球与智能宝宝接触时,智能宝宝会用脚将皮球踢飞并触发音效使智能宝宝发声,同时计数器将心情值累加。人工智能的升级和演化就是一个学习系统的开发:通过点击图书馆或者不同的书本,让智能宝宝进行学习,学习课程可以分为小学、初中、高中,大学等。在不同的学历下,智能宝宝需要通过不同时间的学习来获得学位,并且计入成就点系统中,在不同的阶段,智能宝宝会对用户同一操作做出截然不同的反馈。通过这种模式使智能宝宝的AI增长,从而给用户提供较好的用户体验。5游戏功能模块的设计与实现5.1日常体验模块实现当用户左右晃动屏幕,气泡不根据重力感应,发生位置的变化。在Android系统中是通过SensorMannager来管理所有的传感器的,使用重力感应器就要实现SensorEventListener接口,然后通过onSensorChanged方法获得手机重力感应器在X,Y,Z三个轴上面的重力分量。使用传感器必须调用registerListener()方法注册,感应器有3个方向float类型的值,x,y,z取值范围在-10到10之间,判断方法如表5-1如示:表5-1Android重力传感器方向值判断手机屏幕是否水平放置X值Y值Z值向上(z轴朝天)是00-10向下(z轴朝地)是00-10向左(x轴朝天)是1000竖直(y轴朝天)是0100游戏气泡位置改变界面如图5-1、图5-2所示:图5-1气泡位置界面1图5-2气泡位置界面2关键代码展示:width=metric.widthPixels;//获取屏幕的宽度(像素)x=width+20;//设置变量X的位置xx=width+60;//设置变量XX的位置xxx=-220;//设置变量XXX的位置mRightAnimation=AnimationUtils.loadAnimation(this,R.anim.round); imv1.startAnimation(mRightAnimation);//启动round动画Runnableupdate=newRunnable(){//气泡浮动效果 publicvoidrun(){ imv4.setX(x); imv5.setX(xx); imv6.setX(xxx);//初始化气泡的位置 if(x<-imv4.getWidth()-5){x=width+30;};//判断变量X的值和气泡一所在的位置并进行逻辑处理 if(xx<-imv5.getWidth()-5){xx=width+40;};//判断变量XX的值和气泡二所在的位置并进行逻辑处理 if(xxx>width+imv6.getWidth()){xxx=-220;};//判断变量XXX值和气泡三所在的位置并进行逻辑处理 x=x-2; xx=xx-1; xxx=xxx+2;//重新赋值变量 handler.postDelayed(update,80);//推迟80毫秒启动线程 } };5.2距离响应模块实现当用户的手靠近距离感应器时,距离值降低达到预设的临界值之后触发“天黑功能”,距离感应器将使用与重力感应相同的onsensorchanged方法获取到距离感应器的距离值。游戏天黑效果界面如图5-3、图5-4所示:图5-3天黑效果实现1图5-4天黑效果实现2关键代码如下:publicclassMainActivityextendsActivityimplementsSensorEventListener{publicstaticfinalStringTAG="SensorTest";//定义距离传感器状态常量privateSensorManagermManager;//定义传感器管理对象privatePowerManagerlocalPowerManager=null;//电源管理对象privatePowerManager.WakeLocklocalWakeLock=null;//电源锁localWakeLock=this.localPowerManager.newWakeLock(32,"MyPower");//参数1:电源锁级别;参数2:是日志tag}publicvoidonResume(){super.onResume();mManager.registerListener(this,mManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),//距离感应器SensorManager.SENSOR_DELAY_NORMAL);//参数1:距离监听器;参数2:传感器类型;参数3:延迟类型}publicvoidonStop(){super.onStop();Log.d(TAG,"onstop");}publicvoidonDestroy(){super.onDestroy();if(mManager!=null){localWakeLock.release();//释放电源锁mManager.unregisterListener(this);//注销传感器监听}}5.3语音交谈模块实现当用户点击语音按钮,触发语音功能,开始语音录制,系统将将语音发送到google云端,然后云端处理,匹配相应的数据,发送到客户端。实现用户与游戏人物的语音交互行为。游戏语音交谈界面如图5-5、图5-6所示:图5-5语音交谈语音实现1图5-6语音交谈语音实现2关键代码如下:publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//关联布局视图界面ButtonspeakButton=(Button)findViewById(R.id.btn_speak);//识别按钮mList=(ListView)findViewById(R.id.list);//查找组件PackageManagerpm=getPackageManager();//获取包管理Listactivities=pm.queryIntentActivities(//获取激活页面Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH),0);//本地识别程序Intent(RecognizerIntent.ACTION_WEB_SEARCH),0);//网络识别程序if(activities.size()!=0){speakButton.setOnClickListener(this);//按钮事件侦听}else{speakButton.setEnabled(false);//若检测不到语音识别程序在本机安装,测将扭铵置灰}}privatevoidstartMysttActivityActivity(){//开始识别startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);//调出识别界面}5.4隐藏属性的实现在游戏中做了很多设定需要玩家通过不断的尝试和摸索才能领会。通过一个简单的全局变量i就可以增加游戏的趣味性。因为智能宝宝有心情的上限和下限值,所以玩家需要通过与智能宝宝的互动才能获得心情的提升,而i就是用来控制智能宝宝的心情的变量。当用户移动爸爸,妈妈,女儿不同的人的照片的时候消耗的心情值也是不同的女儿需要的心情值最大;当扫地达到一定数量时,智能宝宝就会生气并且罢工,当达到某个程度时,智能宝宝又能提供一些方法让玩家获得心情值。通过触发隐藏属性,可以增加心情值的上限,通过常规的方法,智能宝宝的心情上限也能得到提升。有些行为例如讲笑话或者画画就需要智能宝宝预先达到一定的学历才能开启。软件用这些方式来提升智能宝宝的趣味性和可玩性。游戏心情值界面如图5-7、图5-8所示:图5-7心情值变化1图5-8心情值变化2关键代码如下://获取屏幕管理方法同时动态设置屏幕强制横屏和缩放比例 publicvoidrun(){ if(i>=0){//判断i的值 manage.setText(i+""); station.setBackgroundResource(wscimage[i]);//心情量变更 hsweep.postDelayed(state,1000);//设置刷新频率为一秒一次 } if(i<=1){ happy.setVisibility(0);//设置happy按钮显隐状态 if(i<=0){i=0;}} if(i>=5){ happy.setVisibility(-1); boboontouch.setVisibility(-1); bianbian.setVisibility(-1); football.setVisibility(-1);//设置其他三个按钮状态 } } };5.5系统运行维护(1)页面跳转后音乐播放不正常。出现问题:本次在设计初期由于未对背景音乐设置play方法而使用默认播放的原因导致背景音乐在手机进行锁屏后继续播放的问题。解决方法:在play页面的onpause,和ondestory方法中执行背景音乐的onpause和onstop方法使得程序能够很好的控制背景音乐的播放和停止。(2)Setting页面按钮初始化。出现问题:setting页面设置有音乐和音效开关并且音乐音效的播放和按钮图片显示的开关需要同步。解决方法:通过在music_setting和Soundplayer中设置的state状态传递值,在setting的oncreate方法中进行判断,音乐音效的播放和按钮的显示能够同步操作。(3)Play页面与paint页面跳转导致程序报错。出现问题:在paint类中设置了一个path路径用来绘制曲线,并提供了一系列属性来设置path的格式,通过ontouchevent来绘制路径,但是每一次path路径绘制完成需要调用rest方法来重置path路径,但是reset方法又会将之前绘制的路径擦除。解决方法:设置每一次path绘制完成后,新建一个path路径进行绘制,原来的path将保存在bitmap上,从而解决了这个问题。(4)ImageView叠放导致ImageButton无法被按下。出现问题:在智能宝宝心情值降低至一定程度时,会出现happy按钮,其中会有一项是丢大便,当用户点击按钮时通过设置一个ImageView为visible来显示和替换便便的数量。但是这么操作使得便便的ImageView覆盖在其他按钮和ImageView上面,虽然便便的ImageView是背景透明的但是因为控件迭放次序问题用户还是无法对屏幕触摸按钮进行操作,如果将所有按钮浮在便便图片上面时便便又失去了它本身应该有的作用。解决方法:添加了一张透明的图片在bianbiansave[0]的位置上并通过k来循环播放,在k进行变量声明的时候赋值为1,当按钮被点击时直接从第二张图片开始进行播放,当循环到最后一张图片的时候k被赋值为0显示为空,并且bianbianview这个ImageView被设置为不可见,即在不打断事件本身的循环的基础上使得用户可以自由点击屏幕其他位置增加了操作的自由度。5.6APK文件的发布发布APK文件,首先点击file→Export,然后选择ExportAndroidApplication选项,继续点击next进入下一步,再选择需要导出的工程,创建新的keystore后填写相关信息,最后选择保存位置,点击finish即可导出.apk文件。然后将其安装至手机中即可运行,开始游戏。6总结经过四个月的努力我的毕业设计终于完成了,但是现在回想起来做毕业设计的整个过程,颇有心得,其中有苦也有甜,艰辛同时又充满乐趣,不过乐趣尽在其中!没有接受任务以前觉得毕业设计只是对这几年来所学知识的单纯总结,但是通过这次做毕业设计发现毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。在设计期间,我们通过到图书馆、上网等方式查阅资料充实设计内容。为了能更好的理解这次设计课题,张老师每周抽取宝贵时间来和我们见面,并给给我们提供了许多的宝贵意见和建议,让我感受到了张老师对学生那种诲人不倦的精神,在他的指导下,使我们少走许多弯路,在此请允许我
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基于条件概率公式的缺陷定位:理论、应用与优化
- 基于机器学习的公众情感网络传播模型构建与多场景应用研究
- 基于本体的实例信息抽取与匹配技术:原理、应用与展望
- 基于服务Agent的语义Web服务发现与集成方法研究:技术融合与实践创新
- 基于有限元分析的洗衣机运输包装跌落仿真与可靠性研究
- 基于最大熵算法的SNP与疾病关联性研究:原理、应用与展望
- 基于智能化架构的轨道交通环境与设备监控系统深度设计与实践
- 基于时空维度的大连金石滩滨海旅游小镇旅游用地演变剖析与驱动因素探究
- 制冰机操作工岗位技能考试试卷及答案
- 节假日隐患排查表
- 2026年执业医师定期考核简易程序试卷及答案
- 中国银行股份有限公司2027全球校园招聘考试模拟试题及答案解析
- 2026年《中国梅尼埃病诊疗临床管理指南(2026版)》
- 校园防欺凌AI预警系统技术方案
- 【新教材】统编版(2024)九年级上册道德与法治全册知识点背诵提纲
- 2026秋初中英语新人教版九年级上册第一单元教案
- 2026年大数据中心业务岗结构化面试真题
- 二年级下册数学高斯课件加减法竖式谜全国通用
- 培训教育签到表
- (西藏)小学一考三评信息技术考试参考题库(含答案)
- 双官能团化合物课件
评论
0/150
提交评论