王 亮,曾連蓀
(上海海事大學 信息工程學院,上海 201306)
手機如今早已成為人們隨身攜帶的最為便利的通訊工具,而智能手機的出現,更使它成為人們快速方便的獲得信息的一種重要途徑,憑借著其豐富多彩的應用,正迅速地擴展市場,成為通信設備領域中不可忽視的一股力量。操作系統是智能手機的靈魂,操作系統的功能直接決定智能手機的可擴展性,以 Google公司的 Android[1-2]、蘋果公司的 IOS、微軟公司的Windows phone等主流智能手機操作系統為平臺的各種手機軟件的出現及無線互聯網等現代通信技術的發展,使得無論是在安防、交通、消費、旅游、還是醫療、家居等領域,都無時不刻的在改變著人們的生活。但是,由于手機硬件性能及其存儲空間的限制,手機中存儲的信息也受到了極大的限制,其應用范圍也因此大打折扣,在某些領域的應用更顯得力不從心。這樣,另一種先進的互聯網技術“云計算”在手機領域也得到了快速的推廣與應用,使得我們的手機的應用服務更加的豐富多彩,人們的生活也更加的便利。
文中就是在Android操作系統下,脫離傳統的C/S架構模式,采用B/S架構,結合先進的“云服務”技術,對當下較為熱門的智慧旅游建設規劃和智能導游服務,進行了深入的探索與研究,給出一套較為完善的基于“云服務”和Android操作系統平臺的手機智能導游系統解決方案,希望能夠幫助人們更方便的獲得更佳的旅游生活體驗。
Android是Google于2007年11月推出的一款全新的智能手機平臺,最初,Android的部署目標是移動電話領域,包括智能電話和更廉價的翻蓋手機。但是,Android全面的計算服務和豐富的功能支持完全有能力擴展到移動電話市場以外。因此Android也可以用于其他的平臺和應用程序,發展前景非常廣闊。
Android系統采用了分層的結構,其軟件平臺從上到下主要由4個部分組成:應用程序層、應用程序框架層、Android運行庫層以及Linux內核層。系統的最上層是應用程序層,Android會同一系列核心應用程序包一起發布,這些應用程序包括E-mail客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯系人管理程序等,與系統緊密相連。所有的應用程序都是使用JAVA語言編寫,本系統就是建立在應用程序框架上。
本系統主要采用B/S架構,以Android智能手機為手持終端,訪問景區服務器,獲得相應導游信息,景區內無線熱點主要分成通信AP與定位AP兩類,通信AP與服務器相連,定位AP則獨立存在,具有特定的ID號,供手持終端進行掃描。這樣景區內終端便可以通過WIFI無線網絡連接至通信AP,實現與服務器之間的網絡通信,傳遞相應的導游數據信息,游客所在位置則由各不同景點處所放定位AP所確定,如圖1所示。這種將通信AP與定位AP分開布置的方式不但有效地提高了無線局域網網絡布局的資源利用率,同時還提高了對游客定位的精確度。

圖1 系統框架Fig.1 System framework
圖2展示了該智能導游系統的功能流程圖,當游客進入景區,打開手機WIFI功能,連接至景區內無線通信AP,打開Android瀏覽器,輸入景點所提供的網址,成功打開網頁后,網頁會提示自動加載并安裝自助導游瀏覽器插件,同時顯示整幅景區地圖,標出給游客推薦的最佳游覽路線,供游客參考,頁面此時也會播報景區內游覽時游客應該注意的相關事項以及如何理突發狀況處等。隨后游客便可選擇是否開啟智能導游功能。

圖2 系統功能流程圖Fig.2 Flow chart of system function
若游客未選擇開啟自動導游功能,則當游客每到達設有定位AP景點或區域時,頁面會自動語音提示您的所在位置,而不會進入景點介紹頁面。
若游客選擇開啟自動導游功能,每當游客到達某一景點或區域附近時,頁面會自動跳轉至該景點語音加文字介紹頁面,播放相關語音及文字導游信息,使游客在傾聽語音介紹的同時,也能看到文字描述[3],除此之外,頁面還會有“視頻介紹”和“圖片集錦”兩個選項供游客選擇,點擊后可進入相應的頁面提供視頻和圖片導游服務,當然游客也可以選擇返回查看景區地圖。
Android瀏覽器支持插件(Plug-in)。瀏覽器插件,是一種嵌入在網頁中的應用程序,作為瀏覽器的擴展,向用戶提供更為豐富的網頁應用。
基于Webkit內核的Android瀏覽器,其插件接口標準是NPAPI(Netscape Plug-in API)。 NPAPI的接口分為兩組[4-5],瀏覽器側的NPN接口和插件側的NPP接口:NPN接口是瀏覽器側實現,供插件調用的一系列功能接口;NPP接口是插件側實現,供瀏覽器獲取信息或進行控制操作的接口。瀏覽器插件的核心,就是一個實現了NPP接口,并使用瀏覽器提供的NPN APIs進行對外操作的動態庫。
考慮到 Android系統在架構上的特殊性,Google的工程師對Android瀏覽器的NPAPI接口作了一些修改,添加了一個Android瀏覽器插件特有的結構:插件的Java層。這樣,瀏覽器插件就可以作為一個Android應用,通過常規途徑安裝到Android設備中。圖3描述了瀏覽器與插件之間的關系[6]。
在本系統中所加載的插件的功能是掃描周圍所有AP獲得其 SSID、BSSID、Level、Frequency 等參數, 并將 SSID、Level這兩個重要參數傳至服務器,與數據庫中預設值進行比較,觸發相應的頁面和數據傳輸,Android中WIFI操作所使用到的部分權限和方法類如下:

圖3 瀏覽器與插件間關系Fig.3 Relationship between plugin and browser
XML/HTML代碼:

本系統中采用MySQL作為后臺數據庫,MySQL是一個開放源碼的小型關聯式數據庫管理系統,目前被廣泛地應用在Internet上的中小型網站中,其體積小、速度快、總體擁有成本低、開放源碼等特點,等到了更多的認可和推廣,圖4是本系統中定位AP的數據庫設計,其中在表positionap中,ap_ssid列儲存的是布置在各個不同景點或區域的定位AP所設定的SSID,ap_level列儲存的是預設的信號強度值,當所在區域手機掃描到的定位AP的信號強度大于等于預設值時,則服務器發出相應的網頁信息,提供導游服務。此處各定位AP信號強度的預設值并非理論值或固定不變,其數據均來自實地測試獲得的最佳閾值,同樣,若景區網絡布局稍有變動或設備更換,也可更改其Level預設值。
本系統要求在網頁打開后所顯示的景區地圖可以自由縮放,以便游客能夠更好的對景區內景點位置有更清晰的了解,故需對制作的地圖實現簡易三級縮放的功能:


圖4 定位AP數據庫Fig.4 Database design of position AP

在游客利用手機實施智能導游的過程中,當服務器檢測到游客已進入該景點區域時,需要立刻自動從服務器上發送音頻或視頻文件在網頁上進行播放,部分實現代碼如下:

文中在研究了導游行業需求以及其他智能導游系統的基礎上,提出了一套基于Android平臺的智能云導游系統解決方案。該系統采用B/S架構,完全依靠瀏覽器來實現智能導游功能,消除了傳統智能導游系統下載安裝手機軟件的復雜程序,采用通信AP與定位AP獨立布置,不但提高了無線網絡的布局效率,同時也增加了實際導游過程中的定位精度,使得該系統方案具有很強的實際應用價值,值得進一步推廣。
[1]郭宏志.Android應用開發詳解[M].北京:電子工業出版社,2010.
[2]汪永松.Android平臺開發之旅[M].北京:機械工業出版社,2010.
[3]Oliphant Z.Programming Nestscape Plug-ins[M].Net publishing:Sams,1996.
[4]張國生,高薄,姚慧敏.重視非IE用戶:用NPAPI開發跨瀏覽器的插件[J].測繪科學技術報,2007,6(24):68.ZHANG Guo-sheng,GAO Bo,YAO Hui-min.Pay attention to non-IE users:use NPAPI to develop the plug-in of cross-brower[J].Surveying and Charting for Science and Technology Journal,2007,6(24):68.
[5]汪詩林,吳泉源.WWW瀏覽器插件開發技術[J].計算機應用研究,2000,(4):55-57.WANG Shi-lin,WU Quan-yuan.WWW browser plug-in developmenttechnology[J].ApplicationResearchofComputers,2000,(4):55-57.
[6]李增輝.Android瀏覽器應用開發平臺的研究[D].北京:北京郵電大學,2011.