引言
現(xiàn)有的智能導(dǎo)游系統(tǒng)平臺多種多樣,主要有WinCE 和Linux.WinCE 的使用需要微軟公司授權(quán),實(shí)現(xiàn)成本很高; Android 系統(tǒng)本身是開源項(xiàng)目,源代碼可以免費(fèi)獲取,比起WinCE,選用Android 平臺來實(shí)現(xiàn)智能導(dǎo)游系統(tǒng)可以大大降低系統(tǒng)成本。另外Android操作系統(tǒng)基于Linux2. 6 內(nèi)核,具備高穩(wěn)定性和良好的移植性。應(yīng)用程序開發(fā)語言為Java,具備良好的可擴(kuò)展性,便于軟件升級和維護(hù),加之系統(tǒng)本身提供了非常豐富的UI 組件,故可以設(shè)計(jì)出交互性好的系統(tǒng)應(yīng)用。此外,Google 公司提供了Google API 來支持Android系統(tǒng)運(yùn)行如Google maps 等應(yīng)用,極大地方便了應(yīng)用程序開發(fā)。
本研究提出提出了一種基于Android 平臺的智能導(dǎo)游系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)方案。首先介紹了Android 系統(tǒng)的層次框架并研究了智能導(dǎo)游系統(tǒng)的硬件平臺,給出了系統(tǒng)整體硬件平臺框架和模塊設(shè)計(jì)。在此基礎(chǔ)上,基于Android SDK2. 1 開發(fā)了該系統(tǒng)的應(yīng)用軟件。該軟件功能模塊主要分為游客信息管理、多媒體應(yīng)用、電子地圖,并對各個模塊的功能和界面的實(shí)現(xiàn)進(jìn)行了詳細(xì)地分析和設(shè)計(jì)。測試結(jié)果表明該系統(tǒng)操作簡便,界面友好,并具有良好的可擴(kuò)展性和維護(hù)性。
1 Android 操作系統(tǒng)簡介
Android 操作系統(tǒng)在2007 年由Google 公司發(fā)布,是一款專門面向移動平臺的智能操作系統(tǒng)。Android系統(tǒng)軟件層次結(jié)構(gòu)包括操作系統(tǒng)、中間件、用戶界面和應(yīng)用程序,其層次結(jié)構(gòu)框圖如圖1 所示。
?
圖1 Android 軟件層次結(jié)構(gòu)
最底層為Linux2. 6 內(nèi)核,Android 系統(tǒng)依賴其提供核心服務(wù),如: 進(jìn)程管理、內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧實(shí)現(xiàn)、硬件驅(qū)動和安全服務(wù)等。
庫和運(yùn)行環(huán)境包含一些C /C + + 庫,這些庫能被Android 系統(tǒng)中不同的組件使用。核心庫有: 系統(tǒng)C庫、媒體庫、圖形庫( SGL,3D Libraries ) 、數(shù)據(jù)庫( SQLite) .核心庫都針對嵌入式應(yīng)用進(jìn)行了優(yōu)化。
應(yīng)用層框架提供了各種視圖組件、內(nèi)容提供器、資源管理器、活動管理器等一系列的系統(tǒng)服務(wù),方便開發(fā)交互性好的應(yīng)用程序。
2 智能導(dǎo)游系統(tǒng)平臺框架設(shè)計(jì)
該系統(tǒng)硬件平臺選用ARM 平臺,CPU 選用三星公司的S3C6410A.S3C6410A 為ARM11 內(nèi)核,具備智能能量管理器,功耗低并且采用ARM Jazelle( R) 技術(shù)用以有效支持嵌入式Java 執(zhí)行。此外,S3C6410A主頻為533 MHz,可以流暢地運(yùn)行Android 系統(tǒng)。
液晶觸摸顯示屏采用NEC 公司的4. 3″的觸摸液晶屏,分辨率為480 × 272,完全滿足導(dǎo)游系統(tǒng)要求。
系統(tǒng)移植的Android 內(nèi)核版本為Android2. 1.
?
圖2 智能導(dǎo)游系統(tǒng)平臺框架設(shè)計(jì)。
智能導(dǎo)游系統(tǒng)通過Wifi 方式接入互聯(lián)網(wǎng),通過Google maps 提供的數(shù)據(jù)實(shí)現(xiàn)電子地圖的功能。Wifi模塊采用Marvell 8686,通過SDIO 接口與S3C6410 連接使用。
3 智能導(dǎo)游系統(tǒng)應(yīng)用功能模塊設(shè)計(jì)
智能導(dǎo)游系統(tǒng)的應(yīng)用程序通過Android 2. 1 SDK來開發(fā),數(shù)據(jù)存儲采用嵌入式數(shù)據(jù)庫SQLite.智能導(dǎo)游系統(tǒng)具有游客信息管理、多媒體應(yīng)用、電子地圖功能。智能導(dǎo)游系統(tǒng)功能模塊框架設(shè)計(jì)如圖3 所示。
?
圖3 智能導(dǎo)游系統(tǒng)應(yīng)用功能模塊設(shè)計(jì)
3. 1 游客信息管理模塊
游客信息管理模塊負(fù)責(zé)對團(tuán)隊(duì)游客的信息進(jìn)行管理,支持?jǐn)?shù)據(jù)存儲、查詢、修改等功能,以隨時記錄游客信息,方便對旅游團(tuán)隊(duì)進(jìn)行管理。
Android 系統(tǒng)中可供選擇的存儲方式有如下幾種:
SharedPreferences、文件存儲、SQLite 數(shù)據(jù)庫存儲、內(nèi)容提供器( CONtent provider) 和網(wǎng)絡(luò)存儲。在該系統(tǒng)中,游客信息數(shù)據(jù)存儲采用SQLite 數(shù)據(jù)庫進(jìn)行存儲。
SQLite 是Android 系統(tǒng)所帶的一個輕量級嵌入式數(shù)據(jù)庫,支持SQL 語句,實(shí)現(xiàn)了事務(wù)的原子性、一致性、獨(dú)立性及持久性( ACID) ,最大支持2 TB 的數(shù)據(jù)存儲。
SQLite 存儲數(shù)據(jù)實(shí)現(xiàn)方式: 首先實(shí)例化一個SQLiteDatabase 類,即得到一個SQLite 數(shù)據(jù)庫。SQLite數(shù)據(jù)庫對象有3 個方法: ①onCreat( ) : 在數(shù)據(jù)庫第一次生成的時候,系統(tǒng)調(diào)用這個方法用來生成數(shù)據(jù)庫表;②onUpgrade( ) : 當(dāng)數(shù)據(jù)庫更新的時候,系統(tǒng)會調(diào)用這個方法將數(shù)據(jù)庫從舊版本跟新到新版本; ③onOpen( ) : 打開數(shù)據(jù)庫時的回調(diào)函數(shù)。通過在onOpen( ) 方法中調(diào)用數(shù)據(jù)庫實(shí)例的execSQL( ) 方法,就可以在打開該數(shù)據(jù)庫的時候執(zhí)行一條SQL 語句,從而完成相應(yīng)數(shù)據(jù)庫操作功能。
游客信息數(shù)據(jù)庫字段定義如表1 所示。
在數(shù)據(jù)庫中對游客信息進(jìn)行增加、修改、刪除等操作的設(shè)計(jì)方案,通過采用事件監(jiān)聽模型來完成,從而使應(yīng)用程序具有良好的交互性。筆者以查找功能的實(shí)現(xiàn)為例,來闡述智能導(dǎo)游系統(tǒng)對游客信息管理的查找事件處理的流程。
表1 游客信息數(shù)據(jù)庫字段
?
查找事件處理過程的事件源為查找按鈕findBut-ton.首先程序?qū)⒈O(jiān)聽器clickLiSTener 通過setOnClick-Listener( ) 方法注冊到findButton.當(dāng)外部動作觸摸到findButton 的時候,系統(tǒng)產(chǎn)生click 事件,并將其傳入到事件監(jiān)聽器clickListener.事件監(jiān)聽器調(diào)用事件處理器做出相應(yīng)動作,即在onClick 方法中調(diào)用系統(tǒng)函數(shù)startActivity,啟動一個intent( 意圖) ,從而實(shí)現(xiàn)界面的跳轉(zhuǎn),再通過調(diào)用數(shù)據(jù)庫的execSQL( ) 方法來實(shí)現(xiàn)數(shù)據(jù)庫查找操作功能。
3. 2 多媒體應(yīng)用模塊
多媒體應(yīng)用模塊主要完成3 個功能: 景點(diǎn)音頻解說、景點(diǎn)圖片預(yù)覽、景點(diǎn)視頻播放。利用解說音頻的播放可以有效降低導(dǎo)游的工作強(qiáng)度,而且通過景點(diǎn)圖片和視頻的預(yù)覽,可以補(bǔ)充展現(xiàn)景點(diǎn)珍貴的歷史圖片和特定時間段的景色,從而更加展現(xiàn)出景點(diǎn)的魅力。
3. 2. 1 多媒體應(yīng)用模塊的主界面設(shè)計(jì)
本研究以景點(diǎn)為"西湖十景"為例,多媒體功能主界面如圖5 所示。
?
圖5 多媒體應(yīng)用主界面。
多媒體應(yīng)用模塊的主界面采用組件ListView,以列表方式來展現(xiàn)。當(dāng)開發(fā)人員進(jìn)入多媒體應(yīng)用模塊的主界面后,在該界面的onCreate( ) 方法中,使用newListView( ) 語句新建一個ListView,通過setAdapter( )方法將其與數(shù)組適配器ArrayAdapter 進(jìn)行綁定,從而在ListView 界面對數(shù)據(jù)進(jìn)行顯示。數(shù)組適配器Array-Adapter 將數(shù)組里定義的數(shù)據(jù)一一對應(yīng)地顯示在List-View 組件。
本研究在多媒體應(yīng)用主界面需要實(shí)現(xiàn)在不同的選項(xiàng)選擇,并進(jìn)入相應(yīng)的界面功能。通過創(chuàng)建并綁定一個選項(xiàng)選擇監(jiān)聽器: itemSelectedListener,并通過setOnItemClickListener() 方法來將其綁定到Lisview.當(dāng)選中相應(yīng)的景點(diǎn)時,就可以進(jìn)入對應(yīng)的功能界面。
3. 2. 2 多媒體功能的實(shí)現(xiàn)
Andriod 系統(tǒng)提供了常見的媒體編碼、解碼機(jī)制,如MP3, JPG,MPEG4,h. 264 等編碼格式,因此可以非常容易地集成音頻、視頻和圖片等多媒體到應(yīng)用程序中。播放音頻功能的實(shí)現(xiàn)需要實(shí)例化一個MediaPlayer類,然后調(diào)用setDataSource( ) 方法來設(shè)置音頻文件的路徑,再調(diào)用start( ) 實(shí)現(xiàn)音頻的播放。視頻播放的實(shí)現(xiàn)方法類似于音頻播放,借助VideoView 和Media-Controller 組件即可以實(shí)現(xiàn)。圖片預(yù)覽的實(shí)現(xiàn)采用網(wǎng)格視圖GridView,本研究通過調(diào)用網(wǎng)格視圖的setAdapter方法將待預(yù)覽的圖片的引用和該視圖對象進(jìn)行綁定,可以將很多圖片以一定的大小同時顯示出來,適合圖片預(yù)覽的應(yīng)用。
3. 3 電子地圖功能模塊
該系統(tǒng)的電子地圖功能借助Google maps 的API來進(jìn)行編程實(shí)現(xiàn)。經(jīng)過申請Google maps 的API key之后,本研究使用Android 系統(tǒng)提供的map 包( com.google. android. maps) ,從而在顯示界面完成顯示電子地圖及其他應(yīng)用的功能。
電子地圖功能模塊的框圖設(shè)計(jì)如圖6 所示:
?
圖6 電子地圖功能框圖設(shè)計(jì)
視圖模式功能模塊根據(jù)選擇來分別顯示衛(wèi)星圖、街景圖、交通圖,并對地圖進(jìn)行放大和縮小操作。視圖功能的實(shí)現(xiàn)通過采用MapView 類來實(shí)現(xiàn)。MapView類是一個展示地圖的視圖,它可以獲取鍵盤事件( on-KeyDown 和onKeyUp) 來支持地圖移動和縮放功能。
本研究通過使用mapView. toggleSatellite ( ) 和map-View. toggletraffic( ) 的兩個方法可以分別選擇顯示衛(wèi)星圖或者路況圖。電子地圖的設(shè)置大小的功能通過MapController 的setZoom( ) 方法來實(shí)現(xiàn)。
地點(diǎn)查找功能通過輸入目的地名稱,調(diào)用get-FromLocationName( ) 方法來返回查詢結(jié)果并在地圖上顯示,可以方便找到目的地的位置。目的地經(jīng)、緯度借助LocationManager 的getLastKnownLocation 方法來得到: 通過getLastKnownLocation 方法得到一個新的Location對象,那么該點(diǎn)的經(jīng)度和緯度分別由該類的get-Latitude( ) 和getLongitude( ) 方法來得到。
除此之外,景點(diǎn)周圍信息查詢功能模塊通過預(yù)先存儲的內(nèi)容,為游客提供周圍的交通和食宿信息。
4 結(jié)束語
測試結(jié)果表明,該系統(tǒng)運(yùn)行穩(wěn)定,操作簡單,能提供豐富的多媒體應(yīng)用并具有良好的人機(jī)交互界面,在旅游業(yè)中有廣泛的應(yīng)用前景。另外,該系統(tǒng)還可以結(jié)合地理位置信息,實(shí)現(xiàn)自動選擇相應(yīng)的多媒體應(yīng)用的文件,該功能有待進(jìn)一步研究和實(shí)現(xiàn)。
評論
查看更多