郝波
【摘要】 計(jì)算機(jī)技術(shù)和移動(dòng)通信技術(shù)的飛速發(fā)展, 終端設(shè)備的信息化與智能化的結(jié)合已成為推動(dòng)世界經(jīng)濟(jì)和社會(huì)發(fā)展的新引擎,在此基礎(chǔ)上基于智能操作系統(tǒng)的移動(dòng)互聯(lián)技術(shù)正廣泛地應(yīng)用于各個(gè)領(lǐng)域,本課題研究基于Android系統(tǒng)的應(yīng)用于智能終端的自助旅游系統(tǒng)開發(fā)與海南(三亞)旅游資源的結(jié)合。該系統(tǒng)是一款以Java為開發(fā)語言,集成了Android SDK軟件開發(fā)工具包的Eclipse為開發(fā)環(huán)境的應(yīng)用軟件, 實(shí)現(xiàn)景區(qū)的選擇,景區(qū)多媒體展示、地圖定位、游志分享等功能。
【關(guān)鍵詞】 Android Eclipse SDK 自助旅游系統(tǒng)
海南作為我國重要的旅游目的地,2009年國務(wù)院正式批復(fù)海南建設(shè)國際旅游島,海南的旅游業(yè)迎來了一個(gè)前所未有的發(fā)展機(jī)遇[1]。在信息化大趨勢(shì)下基于智能操作系統(tǒng)的移動(dòng)互聯(lián)技術(shù)正被越來越廣泛地應(yīng)用于旅游信息發(fā)布,旅游目的地的導(dǎo)航定位,旅游資源的勘查,旅游自助服務(wù)等。
Android是開放的操作系統(tǒng)平臺(tái),基于Android平臺(tái)的開發(fā)的智能終端能有效的應(yīng)用和移植各種應(yīng)用軟件。移動(dòng)技術(shù)與網(wǎng)絡(luò)技術(shù)的融合使信息傳輸在終端設(shè)備間更暢通,解決了數(shù)據(jù)傳輸瓶頸 [2]。同時(shí)結(jié)合GPS,BaiduMap,網(wǎng)絡(luò)傳輸,多媒體應(yīng)用等技術(shù),為實(shí)現(xiàn)網(wǎng)絡(luò)環(huán)境下Android平臺(tái)和開放平臺(tái)之間的數(shù)據(jù)交換提供了一種有效的解決方法。
一、 系統(tǒng)的組件與應(yīng)用
應(yīng)用程序組件是Android應(yīng)用程序的基礎(chǔ),是系統(tǒng)進(jìn)入應(yīng)用程序的通道。本課題的組件主要包括:Activity組件、Service組件和ContentProvider組件。
1.1 Activity組件及應(yīng)用
Activity是為用戶操作而展示的可視化用戶界面,用戶從開始點(diǎn)擊應(yīng)用程序圖標(biāo)到系統(tǒng)與人的信息交流都要通過一個(gè)良好的人機(jī)交互界面來實(shí)現(xiàn),每個(gè)界面都是一個(gè)Activity(活動(dòng)),界面上包含了按鈕、對(duì)話框、菜單、圖片等等,程序都是從Activity類開始執(zhí)行。Activity 從開始執(zhí)行到切換到下一個(gè)Activity被稱為一個(gè)生命周期,這個(gè)過程包含了創(chuàng)建、開始、喚醒、暫停和退出五步,它由系統(tǒng)通過堆棧來管理。
1.2 Service組件及應(yīng)用
Service服務(wù)是運(yùn)行在后臺(tái)的服務(wù),主要執(zhí)行較長時(shí)間的操作和遠(yuǎn)程進(jìn)程工作,沒有可視化的用戶界面,用戶在啟動(dòng)一個(gè)服務(wù)后可以在后臺(tái)播放音頻資料、從網(wǎng)絡(luò)上獲取數(shù)據(jù)計(jì)算結(jié)果提供給需要這個(gè)運(yùn)算結(jié)果的activity使用。開發(fā)Service有如下兩個(gè)步驟。
(1)定義一個(gè)繼承Service的子類。
(2)在AndroidManifest.xml文件中配置該Service。
1.3 ContentProvider組件與應(yīng)用
ContentProvider(內(nèi)容提供者)提供標(biāo)準(zhǔn)的接口來獲取和操作數(shù)據(jù),把數(shù)據(jù)封裝到ContentProvider中提供給其它應(yīng)用程序使用,搭建起了應(yīng)用程序之間數(shù)據(jù)交換的橋梁。數(shù)據(jù)可以存儲(chǔ)于文件系統(tǒng)、SQLite數(shù)據(jù)庫及其它存儲(chǔ)方式。然而,應(yīng)用程序并不直接調(diào)用這些方法,而是使用一個(gè) ContentResolver 對(duì)象,調(diào)用它的方法作為替代。 ContentResolver可以與內(nèi)容提供者進(jìn)行通訊,與其合作來對(duì)所有相關(guān)交互通訊進(jìn)行管理。
二、系統(tǒng)的設(shè)計(jì)
2.1系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
(1)根據(jù)Android系統(tǒng)結(jié)構(gòu),結(jié)合的業(yè)務(wù)需求本系統(tǒng)采用基于Android應(yīng)用程序框架基礎(chǔ)上的三層系統(tǒng)結(jié)構(gòu),UI層:為用戶提供應(yīng)用服務(wù)的圖形界面層、邏輯處理層: 為系統(tǒng)提供應(yīng)用程序和數(shù)據(jù)資源之間的調(diào)用與控制,資源層:存放各種數(shù)據(jù)資源,如圖片,音頻,文字信息等,同時(shí)管理數(shù)據(jù)滿足應(yīng)用服務(wù)對(duì)數(shù)據(jù)的調(diào)用。
(2)項(xiàng)目實(shí)施流程設(shè)計(jì),根據(jù)旅游自助系統(tǒng)的業(yè)務(wù)分析,旅游者的實(shí)際需求,按照應(yīng)用軟件流程的設(shè)計(jì)方法,制定整個(gè)項(xiàng)目的實(shí)施流程圖如圖1所示。
(3)系統(tǒng)具體功能流程設(shè)計(jì),用戶通過智能移動(dòng)終端登陸系統(tǒng)提供主界面,定位手機(jī)現(xiàn)在的城市位置,也可切換需要選擇的城市,用戶可以在景點(diǎn)、酒店、美食和購物模塊中做相應(yīng)的選擇。同時(shí)通過地圖應(yīng)用顯示地圖, GPS定位所處位置,選擇合適路線。 (圖2)
(4)旅游目的地需求流程;在旅游目的地主要介紹當(dāng)?shù)爻鞘械木包c(diǎn)、餐飲,住宿、當(dāng)?shù)靥禺a(chǎn)信息,用戶點(diǎn)擊相應(yīng)模塊進(jìn)入對(duì)應(yīng)界面,顯示相應(yīng)信息,包括內(nèi)容介紹,方位導(dǎo)航,目前位置,天氣狀況等,同時(shí)提供預(yù)訂服務(wù)。
2.2 旅游自助系統(tǒng)核心技術(shù)
通過系統(tǒng)業(yè)務(wù)的分析要實(shí)現(xiàn)旅游自助系統(tǒng)的各項(xiàng)功能,要完成如下工作
(1)旅游自助系統(tǒng)是通過不同的界面來實(shí)現(xiàn)人機(jī)交互,給用戶提供豐富的信息服務(wù),實(shí)現(xiàn)各個(gè)界面的有效切換是完成業(yè)務(wù)功能轉(zhuǎn)換的關(guān)鍵,每一個(gè)界面都是一個(gè)Activity,Android提供了Intent機(jī)制來完成應(yīng)用組件間的交互與通訊,從而實(shí)現(xiàn)程序的運(yùn)行,Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的Activity/Service之間的交互。
(2)通過系統(tǒng)需求分析可以知道旅游自助系統(tǒng)中旅游者要獲取所處城市及具體位置信息,本課題主要研究地圖技術(shù)和GPS定位來獲取用戶的地理信息的方法。主要的關(guān)鍵技術(shù)包括地圖顯示、地圖覆蓋層的顯示、GPS定位,基站地位。
(3)Android 數(shù)據(jù)存儲(chǔ)技術(shù)及獲取數(shù)據(jù)方法,本課題中系統(tǒng)應(yīng)用程序所需的各種數(shù)據(jù),用戶通過界面獲得的各種信息數(shù)據(jù),支持地圖及GPS定位信息的各種數(shù)據(jù)都需要合理的使用數(shù)據(jù)存儲(chǔ)機(jī)制,讓用戶方便的檢索、查詢和使用數(shù)據(jù)。Android 數(shù)據(jù)存儲(chǔ)技術(shù)有: SharedPreferences存儲(chǔ)、文件存儲(chǔ)、SQLite數(shù)據(jù)庫存儲(chǔ)、使用ContentProvider存儲(chǔ)、網(wǎng)絡(luò)存儲(chǔ) [3]。根據(jù)旅游自助系統(tǒng)特點(diǎn)本課題主要采用以下數(shù)據(jù)存儲(chǔ)技術(shù)。
三、系統(tǒng)軟件設(shè)計(jì)
3.1 系統(tǒng)工程項(xiàng)目建立
打開安裝了Android SDK 的Eclipse平臺(tái)建立一個(gè)Android Application project,命名為HNLY (海南旅游)。該工程由Android系統(tǒng)生成如下目錄。
Str: 存放整個(gè)Android工程項(xiàng)目的源程序代碼。
Gen: 在建立工程時(shí)自動(dòng)生成一個(gè)r.java 文件,當(dāng)修改和編寫資源文件時(shí)會(huì)相應(yīng)的在r.java 文件中做出標(biāo)記,是程序與資源文件的聯(lián)系的紐帶[4]。
Assets: 存放資源文件,與res中的資源不同,它與r.java不產(chǎn)生聯(lián)系,在調(diào)用時(shí)通過Assetmanger來實(shí)現(xiàn),在本課題中主要存放音頻文件和JPG圖像文件。
Bin; 在項(xiàng)目運(yùn)行后會(huì)產(chǎn)生apk文件,下載到虛擬器或手機(jī)中運(yùn)行。
Res;資源文件,主要包含drawable:圖像或圖像描述文件;layout:Android應(yīng)用程序的布局XML文件;Vaules:應(yīng)用程序常用文件,包含有字符串,樣式以及顏色的定義;Menu;放置菜單選項(xiàng)的布局文件。
3.2工程項(xiàng)目模塊的設(shè)計(jì)
根據(jù)系統(tǒng)業(yè)務(wù)的分析系統(tǒng)主要功能包括景區(qū)的選擇,實(shí)現(xiàn)景區(qū)的切換;景區(qū)信息的交互,實(shí)現(xiàn)景點(diǎn)的選擇與信息的獲?。痪包c(diǎn)的導(dǎo)航與旅行分享,實(shí)現(xiàn)地圖顯示定位于微博分享。因此整個(gè)系統(tǒng)包含的主要模塊設(shè)計(jì)如下:
(1)主界面模塊設(shè)計(jì):是定位城市與切換城市模塊,為用戶顯示手機(jī)定位
城市和海南城市列表,通過LocalActivity和CityActivity來實(shí)現(xiàn),CityActivity為用戶提供海南熱門城市列表,通過數(shù)據(jù)庫SQliteDateBase獲得其他城市列表,通過觸摸或輸入城市名來選擇城市,本地城市的獲取通過LocalActivity完成。
(2)景點(diǎn)詳情模塊設(shè)計(jì):用戶選擇目的旅游點(diǎn),展現(xiàn)用戶旅游景點(diǎn)的圖片,
介紹景點(diǎn)、美食和住宿等服務(wù)信息,模塊的功能通過LocalTourActivity類和
LocalTourDetailActivity類來實(shí)現(xiàn),LocalTourActivity完成景點(diǎn),美食,住宿,購物的列表介紹,LocalTourDetailActivity則是通過用戶點(diǎn)觸LocalTour—Activity的圖片向用戶展現(xiàn)和介紹以上幾方面的具體信息。
(3)地圖顯示模塊:用戶點(diǎn)擊景區(qū)地圖,屏幕顯示整個(gè)旅游目的地的景區(qū)
地圖,在這個(gè)界面用戶選擇地圖模式,導(dǎo)入百度地圖,可以顯示當(dāng)前景點(diǎn)位置和個(gè)人位置,電子地圖模塊通過Baidu Maps Api接口來實(shí)現(xiàn),Android平臺(tái)提供了一個(gè)Map包(com.baidu.android.maps),來實(shí)現(xiàn)Baidu Maps在Android平臺(tái)的展示,
實(shí)現(xiàn)地圖的顯示、位置定位和切換等功能.電子地圖模塊由StaticMapActivity和MapNavigationActivity組成,分別實(shí)現(xiàn)景區(qū)地圖展示和景點(diǎn)交通圖的顯示和位置定位功能.在獲得Baidu Maps Api的支持,可以獲取百度地圖。
(4)微博分享模塊;用戶在旅游景區(qū)選擇景區(qū)模塊,通過點(diǎn)擊微博分享按鍵,記錄旅行行程,旅游心得,通過分享按鈕連接到相應(yīng)微博發(fā)布旅行日志。該模塊通過WeiboShareActivity和Oauth2Activity組件來完成,兩者之間的通過Intent機(jī)制進(jìn)行數(shù)據(jù)傳遞。
參 考 文 獻(xiàn)
[1] 海南省國際旅游島發(fā)展綱要(2010—2020),2010
[2] 周樂,基于XML和J2EE的物流數(shù)據(jù)交換技術(shù)的研究[J],計(jì)算機(jī)時(shí)代, 2009(02): 25-27
[3] 楊功元,Android應(yīng)用程序開發(fā)課程建設(shè)探索[J],計(jì)算機(jī)教育,2012(16):86-88
[4] 佘志龍, Google Android SDK開發(fā)范例大全(第3版) [M], 人民郵電出版社, 2012, 15-1