




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
畢業(yè)設(shè)計學(xué)生姓名1學(xué)院1專業(yè)1班級1學(xué)號1指導(dǎo)教師輝年月日鹽城師范學(xué)院畢業(yè)設(shè)計面向Android的智能寶寶游戲設(shè)計與開發(fā)摘要在以網(wǎng)絡(luò)為核心的信息時代,面向移動平臺的游戲開發(fā)是互聯(lián)網(wǎng)開發(fā)領(lǐng)域的熱門技術(shù),具有很高的普及率。課題基于Android智能終端,以Myclipse為集成開發(fā)環(huán)境,采用語音識別、多線程、異步圖形加載及傳感器技術(shù),設(shè)計并實現(xiàn)了一款智能寶寶益智游戲原型。在具備豐富視覺體驗的同時,具有流暢的速度和較好的易用性、交互性和可移植性。為在智能移動平臺上開發(fā)此類游戲提供了有價值的參考。【關(guān)鍵詞】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研究目的及主要內(nèi)容 32系統(tǒng)開發(fā)環(huán)境 42.1開發(fā)系統(tǒng) 42.2開發(fā)工具 42.3Android開發(fā)環(huán)境搭建的步驟 42.4ADT簡介 52.5Android應(yīng)用程序的基本組件 53關(guān)鍵技術(shù) 63.1傳感器 63.1.1傳感器的原理 63.1.2傳感器在手機中的應(yīng)用 63.2語音識別技術(shù) 73.2.1語音識別原理 73.2.2語音識別技術(shù) 73.3圖形繪制 94游戲分析 94.1可行性分析 94.1.1技術(shù)可行性 94.1.2社會因素可行性 104.2游戲功能分析 104.2.1功能模塊分析 104.2.2功能結(jié)構(gòu)分析 114.2.3功能交互分析 125游戲功能模塊的設(shè)計與實現(xiàn) 125.1日常體驗?zāi)K實現(xiàn) 125.2距離響應(yīng)模塊實現(xiàn) 145.3語音交談模塊實現(xiàn) 155.4隱藏屬性的實現(xiàn) 175.5系統(tǒng)運行維護 185.6APK文件的發(fā)布 196總結(jié) 19參考文獻 20致謝 211緒論1.1研究背景隨著移動終端的智能化,現(xiàn)代都市人對手機的要求越發(fā)增強。市面的智能手機各式各樣,操作系統(tǒng)也不盡相同。而其中Android由于自身良好的交互性和可操作性成為智能手機的主流操作系統(tǒng)[1]。Android采用的操作系統(tǒng)是嵌入式的,憑借其開放性、無管理商制約、硬件選擇豐富、無開發(fā)商制約、Google應(yīng)用結(jié)合完美五大特色優(yōu)勢,吸引諸多開發(fā)商投身其中,以華為、聯(lián)想、小米為代表的國產(chǎn)品牌陣營和以三星為代表的國外品牌。據(jù)最新統(tǒng)計報告,Android智能手機的銷量在智能手機市場的占比要遠(yuǎn)遠(yuǎn)高于蘋果iOS及微軟WindowsPhone系統(tǒng)的市場份額。當(dāng)Android系統(tǒng)的需求逐漸增強時,Android系統(tǒng)的應(yīng)用開發(fā)需求也一定會越來越大,想必也一定會吸引更多的開發(fā)商和開發(fā)愛好者去創(chuàng)造有意義的應(yīng)用[2]。1.2研究意義從2014下半年開始,隨著手機游戲市場集中化程度的提高和洗牌的開始。人們開始注意細(xì)分游戲市場的價值。養(yǎng)成、塔防、卡牌等類型游戲都在被逐漸細(xì)化,人們更加注重自身對精品游戲的需求。而每一個Android手機的使用者,都是手機游戲的需求者,都是潛在的目標(biāo)用戶[3]。隨著Android手機市場的擴大和手機游戲市場的細(xì)分化,勢必要響應(yīng)各類用戶的游戲需求,所以游戲的市場容量將呈現(xiàn)不斷上漲趨勢[4],這其中以面向特定群體的益智類游戲市場占有率最大。1.3研究目的及主要內(nèi)容益智類游戲以其輕松活潑的風(fēng)格、有趣豐富的設(shè)定,在手機游戲中一直占據(jù)主流游戲的地位。益智類游戲操作簡單,在手機游戲中比較流行。通過有趣的人物設(shè)計、簡單的邏輯功能,然后基于真實生活的模擬,帶給用戶強烈的交互性和代入感?;趯ndroid平臺游戲開發(fā)的深入了解,結(jié)合現(xiàn)有技術(shù)基礎(chǔ),設(shè)計了一個基于Android平臺的益智類游戲原型。主要包含游戲感應(yīng)器的實現(xiàn)、智能語音的識別、圖形繪制技術(shù)和游戲界面的精致設(shè)計。2系統(tǒng)開發(fā)環(huán)境2.1開發(fā)系統(tǒng)Android支持跨平臺開發(fā),由操作系統(tǒng)、中間件、應(yīng)用程序三個部分組成,采用軟件堆層的架構(gòu)方式將系統(tǒng)分為三個層面:底層、中間層以及最上面的應(yīng)用層。底層提供一些基本的功能[5]。中間層主要包含一些重要的函數(shù)庫和虛擬機。最上層的應(yīng)用層是各種程序組件[6]。2.2開發(fā)工具編程工具:(1)MyEclipse:結(jié)合PhoneGap移動技術(shù),實現(xiàn)移動應(yīng)用的開發(fā)。不再需要學(xué)習(xí)新的開發(fā)語言和工具,輕松進行JavaWeb開發(fā)[7]。無論開發(fā)桌面的Web應(yīng)用,還是移動Web應(yīng)用MyEclipse都有足夠強大的功能去實現(xiàn)下一代前端開發(fā),并且支持連接到云服務(wù)[8]。(2)ADT:基于Myclipse的Android開發(fā)工具擴展包;(3)AndroidSDK:是開發(fā)工程師去建立軟件而所需的一種開發(fā)工具。2.3Android開發(fā)環(huán)境搭建的步驟首先要下載所需要的開發(fā)工具,名稱及下載網(wǎng)址如表2-1所示。表2-1Android開發(fā)所需的軟件及下載地址軟件名稱下載地址本書使用的版本JDKJDK7MyclipseMyclipseIDEforDevelpers(4.2)AndroidSDKhttp://www.AAndroid4.2SDKADT/Android/eclipse/Android/eclipseADT21.0.1JDK:是java的核心,包括java的運行環(huán)境(JavaRuntimeEnvirnment)、類庫以及java開發(fā)工具等。Eclipse:是一個IDE集成開發(fā)環(huán)境,有兩個版本:EclipseClassicx.x.x版本,EclipseIDEforjavaEE版本。這兩個版本沒有什么本質(zhì)上的區(qū)別,前者是后者的子集,只是后者包含較多的包。AndriodSDK:Andriod開發(fā)工具包,內(nèi)含Andriod虛擬設(shè)備(模擬器)。2.4ADT簡介ADT(AndroidDevelopmentTools)是一個可以集成在MyEclipse中的開發(fā)插件,為Andriod提供專屬開發(fā)環(huán)境。2.5Android應(yīng)用程序的基本組件Android系統(tǒng)架構(gòu)分為四層,從上層到下層分別是應(yīng)用程序?qū)?、?yīng)用程序框架層、系統(tǒng)運行庫層以及Linux內(nèi)核層。系統(tǒng)框架圖如圖2-1所示。圖2-1Android系統(tǒng)架構(gòu)圖Android系統(tǒng)的應(yīng)用程序?qū)哟蟛糠钟蒍ava語言編寫。應(yīng)用程序框架層是Android系統(tǒng)的基礎(chǔ)結(jié)構(gòu),為開發(fā)人員提供直接的組件,加快了對應(yīng)用程序的開發(fā)[9]。系統(tǒng)運行庫層主要作用是搭建應(yīng)用程序框架。Linux內(nèi)核層包含安全性、內(nèi)存管理、進程管理、網(wǎng)路協(xié)議以及驅(qū)動模型等服務(wù)[10]。3關(guān)鍵技術(shù)3.1傳感器3.1.1傳感器的原理傳感器是一種檢測裝置,英文名為transducernsor。作為自動化實現(xiàn)最為重要的一個環(huán)節(jié),傳感器具備微型化、數(shù)字化、智能化等多種特性[11]。敏感元件、轉(zhuǎn)換元件、變換電路、輔助電源四部分構(gòu)成了傳感器。四個部分各包含不同的內(nèi)容以及不同的功能。敏感元件功能:直接接收測量,輸出被測量有關(guān)的物理量信;轉(zhuǎn)換元件功能:物理量信號轉(zhuǎn)換為電信號,物理信號來自于將敏感元件;變換電路功能:用于將轉(zhuǎn)換元件輸出電信號進行放大、調(diào)制等處理;輔助電源功能:為系統(tǒng)(主要是敏感元件和轉(zhuǎn)換元件)提供能量。傳感器原理如圖3-1所示。圖3-1傳感器原理圖3.1.2傳感器在手機中的應(yīng)用智能手機的很多功能都是利用傳感器來實現(xiàn)的,主流傳感器有如下幾種:(1)觸摸傳感器,例如用戶通過按鈕不同狀態(tài)變化,響應(yīng)手機功能;(2)重力傳感器,多被一些競技類游戲采用;(3)加速度傳感器,例如微信中的“搖一搖”功能;(4)光線傳感器,當(dāng)用戶所在環(huán)境變暗時,手機的亮度也會隨之變暗;(5)距離傳感器,當(dāng)用戶在接電話時,耳朵有時會觸發(fā)錯誤界面,這時會將屏幕鎖定黑掉,防止用戶錯誤操作。在Android應(yīng)用程序中,主要通過Android.hardware.SensorEventListener接口來實現(xiàn)傳感功能。從而監(jiān)聽各種事件。針對游戲內(nèi)容,主要研究重力傳感器和距離傳感器。(1)重力傳感器在描述重力傳感器之前,先要對Android坐標(biāo)系統(tǒng)做一個說明。在Android坐標(biāo)系統(tǒng)中,屏幕水平方向從左向右的規(guī)定為X軸。水平放置手機較短的一邊,垂直放置手機較長的一邊。屏幕左下角開始垂直方向指向頂端的規(guī)定為Y軸。當(dāng)手機水平放置在桌上時,指向上方的是Z軸。在重力傳感器中,values數(shù)組中三個元素分別表示了X、Y、Z軸的重力大小。當(dāng)手機在水平桌子上從左向右移動時,values[0]呈現(xiàn)負(fù)值;從右向左移動時,values[0]呈現(xiàn)正值。(2)距離傳感器距離傳感器以cm為單位。有遠(yuǎn)和近兩鐘狀態(tài)。距離傳感器一般用于用戶打電話時,防止用戶誤操作,一般將屏幕鎖定關(guān)閉,給予用戶更好的用戶體驗。紅外LED燈發(fā)射紅外線,被近距離物體反射后,紅外探測器通過接收到紅外線的強度,測定距離,一般有效距離在10cm內(nèi)。在距離傳感器的應(yīng)用中,首先拿到這測距離變化的距離,floatdistance=event.values[0]。然后,檢測這次距離變化和上次距離變化時間差,如果小于系統(tǒng)設(shè)置的閾值,則不會去熄滅屏幕。如果過于頻繁則直接被操作系統(tǒng)所忽略。3.2語音識別技術(shù)3.2.1語音識別原理Android中主要通過RecognizerIntent來實現(xiàn)語音識別。語音識別功能主要原理:首先,將用戶錄制的語音發(fā)送到google云端;然后,通過云端處理技術(shù),匹配到相應(yīng)的數(shù)據(jù);最后,發(fā)送到客戶端,響應(yīng)用戶對游戲人物的交互操作。3.2.2語音識別技術(shù)Android語音識別過程與人對語音識別處理的過程基本上是一致的。它實際上是一種模式識別系統(tǒng),和常規(guī)的模式系統(tǒng)一樣,有特征提取、模式匹配、參考模式庫等三個基本單元。實現(xiàn)步驟分前端處理、聲學(xué)模型與模式匹配和語言處理三個通用步驟。即先識別語音信號,從中提取特征參數(shù)(有效數(shù)據(jù))表示基本語音;然后根據(jù)獲取的特征標(biāo)識進行學(xué)習(xí)匹配最終產(chǎn)生對應(yīng)算法;最后根據(jù)分析結(jié)果產(chǎn)生最佳聲學(xué)模型,經(jīng)過語法、語義分析,實現(xiàn)語音識別功能。具體實現(xiàn)語音識別的結(jié)構(gòu)流程如圖3-2所示。圖3-2語音識別原理圖Android應(yīng)用系統(tǒng)中實現(xiàn)語音識別的流程:(1)使用intent調(diào)用語音識別程序使用前需要安裝語音識別程序如語音搜索。在應(yīng)用程序中使用intent來調(diào)出語言識別界面,錄音并識別后將識別的字串返回給應(yīng)用程序。步驟1:通過intent傳遞語音識別的模式:Intentintent=newIntent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);步驟2:開始語言模式和自由形式的語音識別:Intent.putExtra(RecognizerInter.EXTRA_LANGUAGE_MODEL.RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);步驟3:設(shè)置語言庫:intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE,Locale.CHINA.toString()));步驟4:執(zhí)行intent,語音識別:IntentputExtra(RecognizerIntent.EXTRA.PROMPT.“請你語音”);步驟5:開始語音:startActivityForResult(intent,1234);RecognizerIntent包括的常量如表3-1所示。表3-1RecognizerIntent常量常量描述ACTION_RECOGNIZE_SPEECH開啟語音活動ACTION_WEB_SEARCH開啟網(wǎng)絡(luò)語音模式EXTRA_LANGUAGE可以理解為設(shè)置一個語言庫EXTRA_LANGUAGE-MODEL語音識別模式EXTRA_MAX_RESULTS返回的最大結(jié)果EXTRA_PROMPT請用戶語音EXTRA_RESULTS將字符串返回一個ArrayList中LANGUAGE_MODEL_FREE_FORM在一種語言模式上自由搜索LANGUAGE_MODEL_WEB_SEARCH使用語言模型在Web上搜索RESULT_AUDIO_ERROR音頻有問題RESULT_CLIENT_ERROR客戶端有問題RESULT_NETWORK_ERROR網(wǎng)絡(luò)有問題RESULT_NO_MATCH沒有檢測到語音的錯誤RESULT_SERVER_ERROR服務(wù)器有問題(2)使用Service調(diào)用語音識別程序在使用使用Service調(diào)用語音識別程序時,要安裝語音識別服務(wù)。然后調(diào)用語言識別功能,最后,通過Listener,將錄音后被識別的字符串發(fā)送給相應(yīng)的應(yīng)用程序。步驟1:初始化識別工具,得到句柄:SpeechRecognizersr=SpeechRecognizer.createSpeechRecoginzer(this);步驟2:注冊回調(diào)類及函數(shù):sr.setRecognitionListener(newlistener());步驟3:開始監(jiān)聽:sr.startListening(newintent(Recognizerintent.ACTION_RECOGNIZE_SPEECH));3.3圖形繪制Android中利用Canvas類進行圖形繪制。可以將這個類看做平時生活中的畫板,可以發(fā)揮想象力,進行各種有趣的創(chuàng)作。Canvas類一種用戶畫圖的API,系統(tǒng)提供給它的一塊內(nèi)存區(qū)域。并且提供了一整套方法可以對這塊內(nèi)存進行操作。用戶可以自由創(chuàng)作,對這塊畫板進行無限制、無拘束的操作。其中,有兩種畫圖的環(huán)境方式:(1)普通View的canvas。適用于工作量小,對品質(zhì)要求低的工作。(2)SurfaceView的canvas。在SurfaceView通過線程來完成畫圖工作,適用于工作量大,對品質(zhì)要求的高的工作。4游戲分析4.1可行性分析4.1.1技術(shù)可行性因為Android是向下兼容的,所以在開發(fā)上選擇了兼容性比較強的Android4.0版本,也就是說市面上70%以上的Android手機都能夠很好的兼容這款應(yīng)用。在傳感器上方面,對于市面上絕大多數(shù)Android手機都具備重力傳感器,而在千元以上智能機上面也具備距離感應(yīng)器,包括前置攝像頭,所以在傳感器上層面,應(yīng)用做到了貼合大眾的要求。4.1.2社會因素可行性(1)法律因素。該項目為獨立開發(fā),使用的開發(fā)軟件均為正版軟件,系統(tǒng)開發(fā)中的一切行為均在復(fù)合國家法律規(guī)定的范圍內(nèi)發(fā)生。(2)用戶使用。在項目的開發(fā)中,將游戲界面設(shè)計的清新簡潔,風(fēng)格設(shè)定輕松活潑,以增強用戶的交互性。使用戶體驗流暢、有意義,方便用戶操作。在用戶的操作使用上,具備可行性條件。4.2游戲功能分析4.2.1功能模塊分析(1)智能成長模式。用戶通過操作不同的組件來控制智能寶寶的心情的增長和降低。實現(xiàn)方式:不同的用戶操作通過監(jiān)聽器的觸發(fā)傳遞參數(shù)給心情控制面板,心情控制面板通過消息隊列的方式對心情界面進行更新,來表示心情值的變化。(2)智能傳感模式用戶通過操作手機傾斜使手機中氣泡根據(jù)用戶傾斜幅度進行游動,并且在用戶觸摸后會發(fā)生爆炸并發(fā)出爆炸聲。實現(xiàn)方式:智能寶寶收集重力傳感器x軸和y軸數(shù)據(jù),將其加入氣泡位移的線性方程中,通過最簡單的函數(shù)來控制在不同角度下氣泡的游動幅度來達到智能傳感的效果,并簡化代碼。(3)智能識別模式。智能寶寶通過對感應(yīng)器數(shù)據(jù)的分析對用戶所做操作進行判斷,執(zhí)行相應(yīng)的功能。實現(xiàn)方式:通過監(jiān)聽距離傳感器在固定時間內(nèi)的x軸值的變化量來判斷是否進行下一步操作。(4)自由畫板。用戶通過點擊畫筆進入自由畫板功能,在自由畫板中用戶可以畫出任意的線條。實現(xiàn)方式:用戶點擊按鈕跳轉(zhuǎn)到畫板中,通過觸摸感應(yīng)時間來獲取手指滑動坐標(biāo),通過新建路徑來繪制線條并通過draw方法繪制到手機屏幕上,通過bitmap來保存畫布和圖案。4.2.2功能結(jié)構(gòu)分析游戲主要由主界面、游戲界面、設(shè)置界面、商城界面四個部分組成。在游戲界面中又分為單個游戲界面和繪畫界面;設(shè)置界面主要分布一些設(shè)置按鈕和功能簡介;而商城界面主要提供一個購買鏈接,方便用戶對于一些裝備的購買。系統(tǒng)功能結(jié)構(gòu)設(shè)計圖如圖4-1所示。圖4-1系統(tǒng)功能結(jié)構(gòu)設(shè)計圖游戲功能分析表如表4-1所示。表4-1游戲功能分析表界面操作表現(xiàn)方式主界面按鈕跳轉(zhuǎn)通過按鈕的監(jiān)聽事件使go、shop、more指向三個不同的activity。設(shè)置界面白云浮動通過消息隊列的方式控制白云從不同位置出現(xiàn)以不同的速度運動。音樂控制通過musicplayer類實現(xiàn)對背景音樂的播放。音效控制通過sundplpyer類實現(xiàn)對音效的播放控制。游戲界面照片移動通過點擊相應(yīng)的照片來移動他們,達到預(yù)定位置后回到固定位置。掃地通過點擊水桶使智能寶寶去掃地,并重復(fù)這個動作同時損失心情值。心情變化每個不同的動作都將傳遞值給心情使心情值隨之升高或者降低。繪畫通過面板上的繪畫按鈕進入繪畫界面,手指滑動即可作畫。氣泡在心情值降低至一定程度時氣泡按鈕出現(xiàn),點擊破碎并增加心情值。丟大便通過點擊按鈕進行控制,點擊次數(shù)越多數(shù)量越多不會增加心情值。踢足球通過滑動屏幕進行控制,觸發(fā)成功增加心情值。鏈接跳轉(zhuǎn)當(dāng)點擊商城按鈕時程序?qū)⒋蜷_默認(rèn)瀏覽器跳轉(zhuǎn)向外鏈地址。4.2.3功能交互分析該游戲的智能體現(xiàn)在當(dāng)用戶讓智能寶寶去掃地的次數(shù)達到5次以上時,位于游戲左上角的表示心情的進度條將會掉至0點,并且智能寶寶將會拒絕再次掃地。而心情值是通過一個參數(shù)計算的,這個參數(shù)最大值為5,當(dāng)參數(shù)大于5時將不再增長。通過控制imagebutton中的Visible屬性,用戶點擊屏幕后會出現(xiàn)“扔大便”“踢球”“冒氣泡”這三個imagebutton。當(dāng)用戶選擇扔大便時,屏幕上就會出現(xiàn)一坨大便,并且用戶點擊次數(shù)越多,大便的數(shù)量越多,智能寶寶的心情值也會將為0;當(dāng)用戶點擊踢球時,智能寶寶開始踢球運動,心情值會增加;當(dāng)用戶點擊冒氣泡時,智能寶寶被提示開始打掃房間,心情值變低,當(dāng)房間打掃完成,智能寶寶心情值開始增加。關(guān)于扔大便效果,是通過一個數(shù)組儲存一組圖片,其中大便的數(shù)量是遞增的,隨著點擊次數(shù)的增加,大便數(shù)量也會不斷的增加,與此同時,計數(shù)器開始傳遞一個參數(shù)給心情值,使心情值顯變低。關(guān)于冒氣泡,當(dāng)用戶點擊氣泡按鈕時,屏幕上將會出現(xiàn)一個氣泡,這個氣泡是通過感應(yīng)器的管理類來獲取的重力感應(yīng)數(shù)據(jù),然后通過函數(shù)的計算體現(xiàn)到屏幕上,從而達到隨著屏幕晃動而晃動的效果。當(dāng)用戶強烈點擊氣泡時,觸發(fā)監(jiān)聽器運行xml格式動畫,演示氣泡破裂效果。同時,計數(shù)器開始傳遞一個參數(shù)給心情值,使心情值顯變低。關(guān)于踢球,用戶用手指滑動皮球時被onTouchEvent捕獲,并由新線程來操作皮球向著用戶滑動的方向滾動,當(dāng)皮球與智能寶寶接觸時,智能寶寶會用腳將皮球踢飛并觸發(fā)音效使智能寶寶發(fā)聲,同時計數(shù)器將心情值累加。人工智能的升級和演化就是一個學(xué)習(xí)系統(tǒng)的開發(fā):通過點擊圖書館或者不同的書本,讓智能寶寶進行學(xué)習(xí),學(xué)習(xí)課程可以分為小學(xué)、初中、高中,大學(xué)等。在不同的學(xué)歷下,智能寶寶需要通過不同時間的學(xué)習(xí)來獲得學(xué)位,并且計入成就點系統(tǒng)中,在不同的階段,智能寶寶會對用戶同一操作做出截然不同的反饋。通過這種模式使智能寶寶的AI增長,從而給用戶提供較好的用戶體驗。5游戲功能模塊的設(shè)計與實現(xiàn)5.1日常體驗?zāi)K實現(xiàn)當(dāng)用戶左右晃動屏幕,氣泡不根據(jù)重力感應(yīng),發(fā)生位置的變化。在Android系統(tǒng)中是通過SensorMannager來管理所有的傳感器的,使用重力感應(yīng)器就要實現(xiàn)SensorEventListener接口,然后通過onSensorChanged方法獲得手機重力感應(yīng)器在X,Y,Z三個軸上面的重力分量。使用傳感器必須調(diào)用registerListener()方法注冊,感應(yīng)器有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關(guān)鍵代碼展示:width=metric.widthPixels;//獲取屏幕的寬度(像素)x=width+20;//設(shè)置變量X的位置xx=width+60;//設(shè)置變量XX的位置xxx=-220;//設(shè)置變量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距離響應(yīng)模塊實現(xiàn)當(dāng)用戶的手靠近距離感應(yīng)器時,距離值降低達到預(yù)設(shè)的臨界值之后觸發(fā)“天黑功能”,距離感應(yīng)器將使用與重力感應(yīng)相同的onsensorchanged方法獲取到距離感應(yīng)器的距離值。游戲天黑效果界面如圖5-3、圖5-4所示:圖5-3天黑效果實現(xiàn)1圖5-4天黑效果實現(xiàn)2關(guān)鍵代碼如下:publicclassMainActivityextendsActivityimplementsSensorEventListener{publicstaticfinalStringTAG="SensorTest";//定義距離傳感器狀態(tài)常量privateSensorManagermManager;//定義傳感器管理對象privatePowerManagerlocalPowerManager=null;//電源管理對象privatePowerManager.WakeLocklocalWakeLock=null;//電源鎖localWakeLock=this.localPowerManager.newWakeLock(32,"MyPower");//參數(shù)1:電源鎖級別;參數(shù)2:是日志tag}publicvoidonResume(){super.onResume();mManager.registerListener(this,mManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),//距離感應(yīng)器SensorManager.SENSOR_DELAY_NORMAL);//參數(shù)1:距離監(jiān)聽器;參數(shù)2:傳感器類型;參數(shù)3:延遲類型}publicvoidonStop(){super.onStop();Log.d(TAG,"onstop");}publicvoidonDestroy(){super.onDestroy();if(mManager!=null){localWakeLock.release();//釋放電源鎖mManager.unregisterListener(this);//注銷傳感器監(jiān)聽}}5.3語音交談模塊實現(xiàn)當(dāng)用戶點擊語音按鈕,觸發(fā)語音功能,開始語音錄制,系統(tǒng)將將語音發(fā)送到google云端,然后云端處理,匹配相應(yīng)的數(shù)據(jù),發(fā)送到客戶端。實現(xiàn)用戶與游戲人物的語音交互行為。游戲語音交談界面如圖5-5、圖5-6所示:圖5-5語音交談?wù)Z音實現(xiàn)1圖5-6語音交談?wù)Z音實現(xiàn)2關(guān)鍵代碼如下:publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);//關(guān)聯(lián)布局視圖界面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);//網(wǎng)絡(luò)識別程序if(activities.size()!=0){speakButton.setOnClickListener(this);//按鈕事件偵聽}else{speakButton.setEnabled(false);//若檢測不到語音識別程序在本機安裝,測將扭銨置灰}}privatevoidstartMysttActivityActivity(){//開始識別startActivityForResult(intent,VOICE_RECOGNITION_REQUEST_CODE);//調(diào)出識別界面}5.4隱藏屬性的實現(xiàn)在游戲中做了很多設(shè)定需要玩家通過不斷的嘗試和摸索才能領(lǐng)會。通過一個簡單的全局變量i就可以增加游戲的趣味性。因為智能寶寶有心情的上限和下限值,所以玩家需要通過與智能寶寶的互動才能獲得心情的提升,而i就是用來控制智能寶寶的心情的變量。當(dāng)用戶移動爸爸,媽媽,女兒不同的人的照片的時候消耗的心情值也是不同的女兒需要的心情值最大;當(dāng)掃地達到一定數(shù)量時,智能寶寶就會生氣并且罷工,當(dāng)達到某個程度時,智能寶寶又能提供一些方法讓玩家獲得心情值。通過觸發(fā)隱藏屬性,可以增加心情值的上限,通過常規(guī)的方法,智能寶寶的心情上限也能得到提升。有些行為例如講笑話或者畫畫就需要智能寶寶預(yù)先達到一定的學(xué)歷才能開啟。軟件用這些方式來提升智能寶寶的趣味性和可玩性。游戲心情值界面如圖5-7、圖5-8所示:圖5-7心情值變化1圖5-8心情值變化2關(guān)鍵代碼如下://獲取屏幕管理方法同時動態(tài)設(shè)置屏幕強制橫屏和縮放比例 publicvoidrun(){ if(i>=0){//判斷i的值 manage.setText(i+""); station.setBackgroundResource(wscimage[i]);//心情量變更 hsweep.postDelayed(state,1000);//設(shè)置刷新頻率為一秒一次 } if(i<=1){ happy.setVisibility(0);//設(shè)置happy按鈕顯隱狀態(tài) if(i<=0){i=0;}} if(i>=5){ happy.setVisibility(-1); boboontouch.setVisibility(-1); bianbian.setVisibility(-1); football.setVisibility(-1);//設(shè)置其他三個按鈕狀態(tài) } } };5.5系統(tǒng)運行維護(1)頁面跳轉(zhuǎn)后音樂播放不正常。出現(xiàn)問題:本次在設(shè)計初期由于未對背景音樂設(shè)置play方法而使用默認(rèn)播放的原因?qū)е卤尘耙魳吩谑謾C進行鎖屏后繼續(xù)播放的問題。解決方法:在play頁面的onpause,和ondestory方法中執(zhí)行背景音樂的onpause和onstop方法使得程序能夠很好的控制背景音樂的播放和停止。(2)Setting頁面按鈕初始化。出現(xiàn)問題:setting頁面設(shè)置有音樂和音效開關(guān)并且音樂音效的播放和按鈕圖片顯示的開關(guān)需要同步。解決方法:通過在music_setting和Soundplayer中設(shè)置的state狀態(tài)傳遞值,在setting的oncreate方法中進行判斷,音樂音效的播放和按鈕的顯示能夠同步操作。(3)Play頁面與paint頁面跳轉(zhuǎn)導(dǎo)致程序報錯。出現(xiàn)問題:在paint類中設(shè)置了一個path路徑用來繪制曲線,并提供了一系列屬性來設(shè)置path的格式,通過ontouchevent來繪制路徑,但是每一次path路徑繪制完成需要調(diào)用rest方法來重置path路徑,但是reset方法又會將之前繪制的路徑擦除。解決方法:設(shè)置每一次path繪制完成后,新建一個path路徑進行繪制,原來的path將保存在bitmap上,從而解決了這個問題。(4)ImageView疊放導(dǎo)致ImageButton無法被按下。出現(xiàn)問題:在智能寶寶心情值降低至一定程度時,會出現(xiàn)happy按鈕,其中會有一項是丟大便,當(dāng)用戶點擊按鈕時通過設(shè)置一個ImageView為visible來顯示和替換便便的數(shù)量。但是這么操作使得便便的ImageView覆蓋在其他按鈕和ImageView上面,雖然便便的ImageView是背景透明的但是因為控件迭放次序問題用戶還是無法對屏幕觸摸按鈕進行操作,如果將所有按鈕浮在便便圖片上面時便便又失去了它本身應(yīng)該有的作用。解決方法:添加了一張透明的圖片在bianbiansave[0]的位置上并通過k來循環(huán)播放,在k進行變量聲明的時候賦值為1,當(dāng)按鈕被點擊時直接從第二張圖片開始進行播放,當(dāng)循環(huán)到最后一張圖片的時候k被賦值為0顯示為空,并且bianbianview這個ImageView被設(shè)置為不可見,即在不打斷事件本身的循環(huán)的基礎(chǔ)上使得用戶可以自由點擊屏幕其他位置增加了操作的自由度。5.6APK文件的發(fā)布發(fā)布APK文件,首先點擊file→Export,然后選擇ExportAndroidApplication選項,繼續(xù)點擊next進入下一步,再選擇需要導(dǎo)出的工程,創(chuàng)建新的keystore后填寫相關(guān)信息,最后選擇保存位置,點擊finish即可導(dǎo)出.apk文件。然后將其安裝至手機中即可運行,開始游戲。6總結(jié)經(jīng)過四個月的努力我的畢業(yè)設(shè)計終于完成了,但是現(xiàn)在回想起來做畢業(yè)設(shè)計的整個過程,頗有心得,其中有苦也有甜,艱辛同時又充滿樂趣,不過樂趣盡在其中!沒有接受任務(wù)以前覺得畢業(yè)設(shè)計只是對這幾年來所學(xué)知識的單純總結(jié),但是通過這次做畢業(yè)設(shè)計發(fā)現(xiàn)畢業(yè)設(shè)計不僅是對前面所學(xué)知識的一種檢驗,而且也是對自己能力的一種提高。在設(shè)計期間,我們通過到圖書館、上網(wǎng)等方式查閱資料充實設(shè)計內(nèi)容。為了能更好的理解這次設(shè)計課題,張老師每周抽取寶貴時間來和我們見面,并給給我們提供了許多的寶貴意見和建議,讓我感受到了張老師對學(xué)生那種誨人不倦的精神,在他的指導(dǎo)下,使我們少走許多彎路,在此請允許我
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 擔(dān)保協(xié)議書和擔(dān)保合同
- 軍訓(xùn)運動服采購合同
- 智能穿戴設(shè)備研發(fā)及銷售合作協(xié)議
- 知識產(chǎn)權(quán)維權(quán)與訴訟代理協(xié)議
- 電子設(shè)備銷售及售后服務(wù)合同
- 正規(guī)住宅房屋買賣合同
- 居間買賣合同與居間協(xié)議
- 高空作業(yè)人員勞務(wù)用工協(xié)議書(3篇)
- 項目運營方案研究
- 海洋能開發(fā)利用技術(shù)轉(zhuǎn)讓協(xié)議
- 大學(xué)生創(chuàng)新創(chuàng)業(yè)基礎(chǔ)(創(chuàng)新創(chuàng)業(yè)課程)完整全套教學(xué)課件
- 項目部組織機構(gòu)框圖(共2頁)
- 機動車登記證書
- ASTM-D471橡膠性能的標(biāo)準(zhǔn)試驗方法-液體影響(中文版)(共24頁)
- 鉭鈮礦開采項目可行性研究報告寫作范文
- 小升初數(shù)學(xué)銜接班優(yōu)秀課件
- 中國十大名茶(課堂PPT)
- 出口食品生產(chǎn)企業(yè)備案自我評估表
- 等待戈多中文劇本經(jīng)典片段 等待戈多中文版劇本
- 鋼結(jié)構(gòu)廠房招標(biāo)文件
- 肥城市死因漏報調(diào)查方案PPT課件
評論
0/150
提交評論