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