陳飛 羅文廣
摘 要:為更好地實(shí)現(xiàn)人與手機(jī)的智能交互性,設(shè)計(jì)了基于Android系統(tǒng)的智能交互APP.系統(tǒng)選用基于Android平臺(tái)的開(kāi)發(fā)技術(shù),使用Eclipse作為系統(tǒng)的開(kāi)發(fā)工具,對(duì)智能交互APP涉及相關(guān)技術(shù)進(jìn)行了介紹,并提出了在GPS定位中測(cè)量點(diǎn)到區(qū)域范圍的解決策略.主要概述了語(yǔ)音模塊、GPS定位模塊、WIFI自動(dòng)鏈接模塊、智能機(jī)器人模塊、APP跳轉(zhuǎn)、語(yǔ)言分析模塊等6個(gè)模塊設(shè)計(jì)方法與流程;同時(shí),通過(guò)對(duì)手機(jī)智能交互的需求分析,設(shè)計(jì)了功能模塊,并在系統(tǒng)中實(shí)現(xiàn)了相關(guān)的技術(shù)和算法.
關(guān)鍵詞:Android;Eclipse;APP;智能交互
中圖分類號(hào):TP273.5 文獻(xiàn)標(biāo)志碼:A
0 引言
Android系統(tǒng)是一個(gè)基于Linux的開(kāi)源操作系統(tǒng)[1],主要應(yīng)用于移動(dòng)電話等領(lǐng)域,因其自身具有優(yōu)秀的擴(kuò)展性和豐富的硬件支持,已經(jīng)擴(kuò)展到了可穿戴設(shè)備、平板電腦、智能家居等領(lǐng)域,并不斷向各個(gè)方向滲透.當(dāng)前,Android系統(tǒng)已經(jīng)超越了Apple的IOS系統(tǒng),變成了市場(chǎng)份額占有率最高的智能手機(jī)操作系統(tǒng).
根據(jù)2016年美國(guó)的一項(xiàng)調(diào)查顯示,數(shù)字媒體使用時(shí)間的62%發(fā)生在移動(dòng)端,并且其中絕大多數(shù)都來(lái)自于應(yīng)用,其使用時(shí)間甚至超過(guò)了電視.相比而言,用戶花費(fèi)在桌面上的時(shí)間從2013年的49%大降至38%.平均每天人們?cè)谑褂肁PP上所花費(fèi)的時(shí)間超過(guò)3 h.相比于傳統(tǒng)瀏覽器,移動(dòng)環(huán)境下的APP擁有更加便捷和豐富的用戶體驗(yàn);相比于傳統(tǒng)的WAP手機(jī)網(wǎng)站,APP具有資源廣泛、個(gè)性化定制、獲取方便、傳播迅速、功能和形式豐富而有趣等優(yōu)勢(shì)[2];所以,用戶使用APP的時(shí)長(zhǎng)和頻次仍在持續(xù)增加.因此,設(shè)計(jì)使用Android的智能交互APP系統(tǒng)具有良好的前景和重要的意義.
1 設(shè)計(jì)思路與功能
本APP基于安卓平臺(tái),通過(guò)GPS定位系統(tǒng)描述并記錄此處的經(jīng)度和緯度,利用經(jīng)緯度相關(guān)信息獲得對(duì)應(yīng)該區(qū)域的一些相關(guān)信息.具體功能實(shí)現(xiàn)步驟如下:
Step1 用戶打開(kāi)本APP軟件進(jìn)入主界面后,首先發(fā)送連接請(qǐng)求,檢測(cè)用戶是否連接網(wǎng)絡(luò),如果連接失敗,則在主界面彈出對(duì)話框“網(wǎng)絡(luò)連接失敗”.這時(shí)用戶可以選擇打開(kāi)手機(jī)流量連接或者點(diǎn)擊主界面下方WIFI連接按鈕.如果點(diǎn)擊WIFI按鈕,則自動(dòng)跳轉(zhuǎn)到WIFI的設(shè)置界面,自動(dòng)打開(kāi)WIFI并且生成WIFI信號(hào)下拉列表,點(diǎn)擊可連接到指定WIFI信號(hào),如果需要密碼驗(yàn)證則彈出輸入密碼對(duì)話框,驗(yàn)證即可連接[3];
Step2 網(wǎng)絡(luò)連接成功以后,本APP開(kāi)始自動(dòng)獲取手機(jī)所在位置的GPS地址,并檢測(cè)用戶和指定地址范圍的距離;
Step3 當(dāng)用戶到達(dá)一定地址范圍時(shí),開(kāi)始智能推送用戶可能需要的相關(guān)訊息.例如到達(dá)車庫(kù)范圍時(shí)語(yǔ)音詢問(wèn)用戶是否需要打開(kāi)導(dǎo)航系統(tǒng),當(dāng)用戶走出“家”這個(gè)范圍時(shí),本APP在后臺(tái)將接收天氣相關(guān)訊息,然后根據(jù)天氣的相關(guān)訊息篩選判斷是否需要提示用戶攜帶雨傘等[4].
2 系統(tǒng)總體設(shè)計(jì)
2.1 軟件結(jié)構(gòu)設(shè)計(jì)
軟件結(jié)構(gòu)設(shè)計(jì)就是一個(gè)宏觀上把軟件需求變成軟件表示的過(guò)程.主要是利用分層來(lái)設(shè)計(jì)軟件模塊,然后把軟件模塊組織成一個(gè)優(yōu)良的層次系統(tǒng),再描述出各層次模塊之間的關(guān)系,而且下層模塊主要負(fù)責(zé)為上層模塊提供相應(yīng)支持.
知道了所設(shè)計(jì)系統(tǒng)的功能之后,先使用結(jié)構(gòu)化設(shè)計(jì)方法劃分軟件層次,再詳細(xì)設(shè)計(jì)各層的模塊,最后分析功能需求和系統(tǒng)模塊之間的調(diào)用關(guān)系.
2.2 軟件模塊結(jié)構(gòu)
軟件的分層設(shè)計(jì)是總體設(shè)計(jì)階段常使用的一種軟件結(jié)構(gòu)設(shè)計(jì)方法.本APP也采用了分層結(jié)構(gòu),分別由用戶界面層(本APP中的該層是由Eclipse中許多.xml文件組成,如strings.xml,styles.xml等)、用戶功能層(本APP中的該層是由Eclipse中許多.java文件組成,如MainActivity.java,GpsActivity.java等)、中間件層(例如使用圖靈機(jī)器人API,語(yǔ)音機(jī)器人API等)和操作系統(tǒng)層(Android 4.0操作系統(tǒng))等4層結(jié)構(gòu)組成.
本APP軟件在操作系統(tǒng)層,使用了Android 4.0操作系統(tǒng),所以只要用戶使用的Android操作系統(tǒng)版本高于4.0都可以使用本軟件.
在中間件層編輯了圖靈機(jī)器人模塊(TulingActivity.java)、語(yǔ)音機(jī)器人模塊(VoiceActivity.java)、GPS定位模塊(GpsActivity.java)、WIFI自動(dòng)鏈接模塊(WifiActivity.java)、APP跳轉(zhuǎn)模塊(SkipActivity.java)和語(yǔ)言分析模塊(AnalyseActivity.java)等6個(gè)主要.java文件,用來(lái)實(shí)現(xiàn)本APP的主要功能.
在用戶功能層,主要通過(guò)MainActivity.java文件實(shí)現(xiàn)中間件層中各個(gè)主要模塊間的相互調(diào)用關(guān)系以及用戶界面層中按鈕的功能.
用戶界面層,主要設(shè)置了界面的布局,并添加了圖片邊框以及一些按鈕等,如strings.xml,styles.xml,color.xml等文件.軟件層次圖如圖1所示.
本APP每層與每層之間有著自上至下的依賴關(guān)系,并且下層能為上層提供服務(wù)接口,如果有一層的內(nèi)部實(shí)現(xiàn)發(fā)生了變化,只需要外部的接口不改變,一般不會(huì)影響到其他層.而且每層按模塊來(lái)劃分,每個(gè)模塊相互獨(dú)立,不相同的模塊間由接口相關(guān)聯(lián),以滿足高內(nèi)聚低耦合的標(biāo)準(zhǔn)[5].
3 模塊的具體設(shè)計(jì)
本次APP的設(shè)計(jì)參考了當(dāng)今社會(huì)上主流的Android軟件開(kāi)發(fā)流程,程序的編寫和界面的開(kāi)發(fā)是利用Eclipse[6]集成開(kāi)發(fā)平臺(tái)并結(jié)合使用了集成組件ADT共同完成的,系統(tǒng)的界面設(shè)計(jì)主要使用了XML頁(yè)面布局工具,由Style樣式文件和圖片組合來(lái)完成.本APP主要由語(yǔ)音模塊、GPS定位模塊、WIFI自動(dòng)鏈接模塊、智能機(jī)器人模塊、APP跳轉(zhuǎn)模塊和語(yǔ)言分析模塊等6個(gè)模塊組成.
3.1 語(yǔ)音模塊設(shè)計(jì)
用戶通過(guò)語(yǔ)音請(qǐng)求形式輸入到語(yǔ)音模塊,在語(yǔ)音識(shí)別后通過(guò)智能機(jī)器人進(jìn)行信息處理,再將處理信息反饋用戶.
3.1.1 第三方語(yǔ)音庫(kù)TTS選擇 TTS(Text To Speech)即“從文本到語(yǔ)音”,能夠讓人和機(jī)器進(jìn)行對(duì)話.目前,Android系統(tǒng)能夠使用的語(yǔ)音庫(kù)主要有3種,分別是Svox,Eye和系統(tǒng)自帶的Pico TST語(yǔ)音庫(kù).但是系統(tǒng)自帶Pico TST語(yǔ)音庫(kù)不支持朗讀中文的功能,所以會(huì)給系統(tǒng)的開(kāi)發(fā)帶來(lái)一定程度上的不便.另外兩種語(yǔ)音庫(kù)Eye和Svox都支持中文,但是Eye開(kāi)源的朗讀效果不好,所以最后選擇了相對(duì)穩(wěn)定的Svox來(lái)作為識(shí)別語(yǔ)音資料庫(kù).
3.1.2 STT語(yǔ)音識(shí)別的引擎選擇 語(yǔ)音識(shí)別的引擎有Linux的開(kāi)源語(yǔ)音識(shí)別引擎Simon,nuance等,這些開(kāi)源語(yǔ)音識(shí)別引擎在英文領(lǐng)域中的識(shí)別效果非常好,但對(duì)中文的識(shí)別存在著不足,所以本APP選擇了google自帶的識(shí)別引擎[7],可以增強(qiáng)對(duì)中文的支持效果.語(yǔ)音模塊流程圖如圖2所示.
3.2 安卓GPS定位設(shè)計(jì)
3.2.1 GPS坐標(biāo)與計(jì)算 GPS(全球定位系統(tǒng))主要由三大塊組成:衛(wèi)星、地面控制站、接收機(jī).GPS接收機(jī)包括手持機(jī)和車載導(dǎo)航機(jī),當(dāng)前手機(jī)幾乎都配備GPS定位功能,在手機(jī)中的導(dǎo)航功能是由GPS定位技術(shù)與其他技術(shù)相結(jié)合衍生出的功能,因此GPS定位的精度十分重要.
在GPS的經(jīng)度和緯度中,地球上每個(gè)緯度之間的距離可以近似地當(dāng)作是117 km,每個(gè)分度間距當(dāng)作1.95 km,每個(gè)秒度間距當(dāng)作32 m;但是經(jīng)度間距會(huì)隨著緯度的升高而逐漸減小,在某處的經(jīng)度長(zhǎng)度可按照以下公式計(jì)算:
1°=111.413cosφ-0.094cos3φ(km)
由手機(jī)GPS獲得的GPS經(jīng)緯度數(shù)據(jù)一般為十進(jìn)制度,但是使用度分秒表示經(jīng)緯度可以有一個(gè)更加直觀的距離概念,十進(jìn)制度與度分秒之間的轉(zhuǎn)換公式為:
十進(jìn)度=度+分/60+秒/3 600
所以,經(jīng)計(jì)算經(jīng)度每變化0.000 01度(0°0'0.036"),則對(duì)應(yīng)在赤道附近的地球表面距離約為1 m多,當(dāng)在地球南北極極點(diǎn)上時(shí),只有0 m;緯度則是比較固定的,其在地球表面任意地方每變化0.000 01度所對(duì)應(yīng)的地球表面距離大約都是1 m[8].
3.2.2 GPS位置與狀態(tài)監(jiān)聽(tīng) 本APP的GPS定位系統(tǒng)主要用來(lái)描述并記錄用戶的經(jīng)度和緯度.GPS的定位設(shè)計(jì),主要是通過(guò)位置管理器(LocationMangager)來(lái)控制與定位有關(guān)設(shè)備的,而后由位置監(jiān)聽(tīng)(LocationListener)來(lái)監(jiān)聽(tīng)設(shè)備的開(kāi)關(guān)和狀態(tài),從而獲得用戶的相關(guān)位置信息(Location);然后,通過(guò)GPS狀態(tài)監(jiān)聽(tīng)(GpsStatus.Listener)獲取衛(wèi)星狀態(tài)信息,并創(chuàng)建一個(gè)迭代保持器保存所有衛(wèi)星;最后綁定監(jiān)聽(tīng)狀態(tài),從而獲取經(jīng)緯度等信息[9].部分代碼如下:
Iteratoriters=gpsStatus.getSatellites( ).iterator( ); //創(chuàng)建一個(gè)迭代器保存所有衛(wèi)星,從而獲得所有衛(wèi)星狀態(tài)
ArrayList
本APP設(shè)計(jì)加入了智能機(jī)器人后,用戶可以和智能機(jī)器人相互聊天,具有一定的智能交互性.但為了提升其智能程序,還需加入一些檢測(cè)與觸發(fā)程序.例如:當(dāng)用戶到達(dá)指定GPS坐標(biāo)范圍后,通過(guò)所測(cè)得的GPS經(jīng)緯度坐標(biāo)判斷是否已經(jīng)到達(dá)或者離開(kāi)指定的范圍,再智能推送一些相關(guān)信息[12].圖4是以離開(kāi)家推送天氣狀況為例的流程圖.
3.5 APP跳轉(zhuǎn)設(shè)計(jì)
APP跳轉(zhuǎn)設(shè)計(jì)主要是用來(lái)從本APP跳轉(zhuǎn)到其它APP應(yīng)用,如從本APP跳轉(zhuǎn)到百度導(dǎo)航或天氣預(yù)報(bào)等APP上[13].
以百度導(dǎo)航為例:百度導(dǎo)航的安裝包為baidudaohang_61.apk,如果手機(jī)上已經(jīng)安裝了百度導(dǎo)航APP,則當(dāng)需要跳轉(zhuǎn)到本APP時(shí),會(huì)直接跳轉(zhuǎn)到本APP;當(dāng)手機(jī)上沒(méi)有時(shí),則打開(kāi)瀏覽器去下載百度導(dǎo)航.部分代碼如下:
intent = packageManager.getLaunchIntentForPackage("baidudaohang_61.apk"); //通過(guò)包名獲取要跳轉(zhuǎn)的APP,創(chuàng)建intent對(duì)象
Intent("android.intent.action.VIEW",Uri.parse("http://gdown.baidu.com/data/wisegame/abc0c81aaeedb8f4/
baidudaohang_61.apk")); //如果沒(méi)有安裝APP就打開(kāi)一個(gè)瀏覽器去下載
3.6 語(yǔ)言分析模塊設(shè)計(jì)
本模塊主要功能是用來(lái)給用戶設(shè)置提醒功能.例如當(dāng)用戶走出家的GPS范圍時(shí),后臺(tái)通過(guò)圖靈機(jī)器人發(fā)送本地天氣的請(qǐng)求,在后臺(tái)接收到的數(shù)據(jù)中選取本日天氣數(shù)據(jù),從而分析天氣情況.如果有“雨”字,則通過(guò)圖靈機(jī)器人給用戶輸出提醒帶傘的語(yǔ)音與文字.同理,當(dāng)檢測(cè)到車庫(kù)范圍時(shí)詢問(wèn)用戶是否帶傘,當(dāng)用戶回答表示肯定的語(yǔ)氣詞時(shí),后臺(tái)發(fā)送跳轉(zhuǎn)請(qǐng)求等.
4 演示成果
本次APP設(shè)計(jì)基本功能已經(jīng)完成,GPS可以獲取到所在的坐標(biāo).下雨天離開(kāi)“家”的范圍后,手機(jī)會(huì)提示用戶帶傘;回“家”時(shí),WIFI會(huì)自動(dòng)連接上WIFI,并提示用戶是否需要菜譜等信息;當(dāng)用戶進(jìn)入“車庫(kù)”范圍時(shí),會(huì)提示是否需要GPS導(dǎo)航等.語(yǔ)音機(jī)器人也可以達(dá)到智能交互的目的.
啟動(dòng)APP后當(dāng)用戶走出“家”的GPS設(shè)定范圍后,本APP會(huì)在后臺(tái)自動(dòng)查詢天氣情況,如果城市有雨將會(huì)提示用戶帶傘,即設(shè)置一個(gè)觸發(fā),后臺(tái)接收天氣信息,如果有“雨”字,則觸發(fā)提示帶傘信息.如果用戶詢問(wèn)城市天氣,本APP將會(huì)自動(dòng)播報(bào)出該城市4 d內(nèi)天氣情況,APP界面即演示效果如圖5所示.
當(dāng)用戶需要連接WIFI時(shí),點(diǎn)擊WIFI選擇按鈕,手機(jī)可以自動(dòng)打開(kāi)WIFI功能,并顯示W(wǎng)IFI信號(hào)列表,點(diǎn)擊即可快速連接,演示效果如圖6所示.
當(dāng)用戶希望知道自己的GPS地址時(shí),點(diǎn)擊“GPS地址”按鈕可以準(zhǔn)確得到用戶所在處經(jīng)緯度信息,演示效果如圖7所示.
當(dāng)?shù)竭_(dá)車庫(kù)時(shí),語(yǔ)音提示詢問(wèn)用戶是否需要打開(kāi)百度導(dǎo)航APP,當(dāng)接收到用戶需求后觸發(fā)打開(kāi)百度導(dǎo)航APP,如果沒(méi)有裝百度導(dǎo)航APP,則會(huì)跳轉(zhuǎn)到下載頁(yè)面.這里演示了直接跳轉(zhuǎn)打開(kāi)百度導(dǎo)航APP,如果沒(méi)有裝百度導(dǎo)航APP,跳轉(zhuǎn)到下載頁(yè)面效果相似,只是跳轉(zhuǎn)部分打開(kāi)的是瀏覽器,演示效果如圖8.
5 總結(jié)
此APP設(shè)計(jì)基本功能已經(jīng)完成,GPS可以獲取到所在的坐標(biāo).下雨天離開(kāi)“家”的范圍后,手機(jī)提示用戶帶傘;回“家”時(shí),自動(dòng)連接上WIFI,并提示用戶是否需要菜譜等信息;當(dāng)用戶進(jìn)入“車庫(kù)”范圍時(shí),提示是否需要GPS導(dǎo)航等.語(yǔ)音機(jī)器人也可以達(dá)到一定程度智能交互的目的.
所得GPS坐標(biāo)是一個(gè)隨機(jī)概率的定位結(jié)果并且與設(shè)備硬件有關(guān),在某點(diǎn)定位的精度大約在1 m左右.獲取GPS坐標(biāo)的速度與手機(jī)設(shè)備硬件和手機(jī)信號(hào)強(qiáng)度有關(guān),信號(hào)不好情況下識(shí)別會(huì)有一定延遲.
目前APP還只是一個(gè)雛形,本次設(shè)計(jì)仍存在一些不足需要完善:GPS地址和WIFI信息還沒(méi)有聯(lián)系到GPS地圖信息庫(kù)中,指定的GPS位置等暫且還需要自己設(shè)定;獲取的GPS地址只選擇接收了經(jīng)度和緯度信息,如果車庫(kù)在住宅底下,識(shí)別會(huì)有一定的影響,因此,最好再加入海拔高度信息來(lái)識(shí)別設(shè)定的GPS地址;若所處環(huán)境基站較多,位置信息的識(shí)別也可以用基站來(lái)定位.
參考文獻(xiàn)
[1] 韓超,梁泉.Android系統(tǒng)原理及開(kāi)發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2010.
[2] 楊豐盛.Android應(yīng)用開(kāi)發(fā)揭秘[M].北京:機(jī)械工業(yè)出版社,2010.
[3] 楊潤(rùn)鋒,方華,劉文烽.基于Android平臺(tái)的新型預(yù)應(yīng)力智能張拉監(jiān)控系統(tǒng)研究[J].廣西科技大學(xué)學(xué)報(bào),2015,26(4):75-79.
[4] 何維,張彥會(huì),粟騰超,等.基于GPS/GPRS/RFID物流車載終端的設(shè)計(jì)[J].廣西科技大學(xué)學(xué)報(bào),2014,25(4):59-62.
[5] 江燕良.基于Android智能終端的遠(yuǎn)程控制系統(tǒng)[J].電子技術(shù)應(yīng)用,2012,38(8):129-132.
[6] 葉達(dá)峰.Eclipse編程技術(shù)與實(shí)例[M].北京:人民郵電出版社,2006.
[7] APARNA S, KUMAR VS. Speech recognition using backoff N-Gram modelling in Android application[J].IEEE,2014,33:55-58.
[8] 蓋索林.Google Android開(kāi)發(fā)入門指南[M].2版.北京:人民郵電出版社,2009.
[9] 劉勝前,陳立定.基于Android平臺(tái)的車輛導(dǎo)航系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表,2012,27(4):1-4.
[10] 余志龍, 王世江.Google Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2010.
[11] 宋小倩,周東升.基于Android平臺(tái)的應(yīng)用開(kāi)發(fā)研究[J].軟件導(dǎo)刊,2011,10(2):104-106.
[12] 吳亞峰,索依娜.Android核心技術(shù)與實(shí)例詳解[M].北京:電子工業(yè)出版社,2010.
[13] 關(guān)晶鑫,李永全.基于Android的手機(jī)購(gòu)物終端系統(tǒng)設(shè)計(jì)[J].電子世界,2013(2):107-108.
Abstract:In order to implement the intelligent interaction of the mobile phone, an intelligent interactive APP based on Android is designed. Eclipse is adopted as the development tool based on Android platform development technology. The relevant technologies of intelligent interactive APP are introduced. And the solution to the measurement point in the GPS location is put forward. The design methods and procedures of the six modules, such as voice module, GPS positioning module, WIFI automatic link module, intelligent robot module, APP jump, language analysis module are summarized. At the same time, based on the analysis of the demand for the intelligent interaction of the mobile phone, the function modules are designed. And the related technologies and algorithms are implemented in the system.
Key words: Android; Eclipse; App; intelligent interaction
(學(xué)科編輯:黎 婭)