張 璘,黃一彬,唐瑞寒
廈門理工學院光電與通信工程系,福建 廈門 361024
隨著人民生活水平和對高層次生活方式認知水平的不斷提高,旅游度假已經成為人們放松休閑的主要形式。因此,當下的旅游行業日益成熟,旅游景點的設施也日漸完備;但是,對于用戶體驗和服務等軟環境的發展和建設還有待加強,而軟環境卻恰恰是提升景區服務質量的重中之重。在經過大量的調研后發現,游客在景區面臨的較普遍問題如下:1)環境陌生,易迷路。即使景區內存在指示牌,但是并非隨處可見,從而導致游客無法隨時辨別位置,甚至導致與親友走失;2)對于國外旅游者,普遍存在語言不通的問題。導致游客無法了解景區概況和路線規劃;3)現有服務系統無法解決多場景、多語言所引發的諸多特定場景問題。
為了解決以上問題,本系統主要解決對國內外景點的綜合路徑規劃、多語種介紹文字的拍照識別翻譯及音頻解說功能,開發一款綜合類的智能導覽系統,將多種問題進行統一管理,為旅客出行帶來便利。
系統采用Android 5.0.1平臺,使用Java編程語言、Eclipse作為開發工具,下載谷歌提供的軟件開發工具包(Software Development Kit,SDK)以及安裝(Android Developer Tools,ADT)插件來搭建環境。本系統主要是客戶端,建立包括城市簡介、景點查詢、附近搜索與路線查詢、景點導覽語音講解、景點介紹拍照識別翻譯和足跡記錄等菜單選項;建立動態數據庫SQlite將用戶的行走路線坐標和景點介紹文字及音頻文件存儲在客戶端;通過調用百度地圖服務器的接口完成定位及路線規劃[1],具體系統框圖如圖1所示。

圖1 系統總體框架圖Fig.1 General framework diagram of system
旅游導覽系統主要是建立在Android平臺下,其功能主要分為城市簡介、附近搜索、公交線路查詢、景點導覽語音講解、拍照識別翻譯、足跡記錄。
1)城市簡介:為用戶介紹旅游城市的基本情況,為游客提供城市基本概況及講解。
2)附近搜索:根據用戶定位所在位置,查詢所處位置附近服務信息,例如查詢附近的景點、餐廳、酒店等位置及概況,為用戶提供便捷的規劃指引。
3)公交線路查詢:自動定位“我的位置”,用戶自主選擇目的地,系統自動篩選最佳路線并進行導航,步行、公交、自駕三種規劃隨心切換。其精準程度,可至步行米數。
4)景點導覽語音講解:細致規劃景區內地圖,用戶到達任意地點,點擊指定航標即可查看景點介紹,同時支持語音輸出,提供雙重交互方式。
5)拍照識別翻譯:對于需翻譯的非中文語言,只需對其文字進行圖片拍攝,系統將自動識別語言并將其進行翻譯;
6)足跡記錄:當用戶使用景點導覽語音講解功能時,系統會記錄下用戶所去過的景點并在足跡界面顯示。
歡迎界面為MainActivity類,首先是在res/lay?out中創建一個相對布局,然后在布局中設置圖片背景,背景資源放在res/drawable中,在布局中放置button 和 editText,在 editText中加入 android:text=“旅游導覽”。該類通過集成Activity并且重寫on?Create方法,在其中使用setContentView(R.layout.activity_main)用來在屏幕中加載XML界面。通過findViewById找到button控件,然后通過setonclick?listene對button設置點擊監聽,在監聽方法中實例化一個intent,intent綁定跳轉,通過StartActivity(intent)執行界面跳轉。
從歡迎界面就可以進入菜單選擇界面。該界面的類為StartActivity類,其界面使用的是線性布局。使用自定義的
2.3.1 百度地圖API Key的獲取 為了能更加直觀的在手機屏幕上顯示地理信息,在該旅游導覽軟件中使用的是百度地圖應用程序編程接口(application programming interface,API),用以實現對地理信息的可視化開發。百度公司為了防止百度地圖API中的接口被過度使用,從而要求開發者去其官網申請一個應用程序的Key,否則將不能在程序中看到百度地圖[2]。
第一步:需在電腦中運行cmd;
第二步:定位到.android文件夾下,輸入cd.an?droid;
第三步:輸入keytool-list-v-keystore debug.keystore,會得到三種指紋證書,選取SHA1類型的證書(密鑰口令是android),其中keytool為jdk自帶工具;keystorefile為Android簽名證書文件,就可以在cmd界面中查看到Android簽名證書的SHA1值,然后在百度API控制臺中輸入安全碼,點擊“下一步”即可獲取到Key。
2.3.2 百度地圖的顯示 若使Android手機中顯示百度地圖不僅僅需要Key,也需一定相應的操作流程:包括配置工程—添加密鑰—添加百度地圖顯示所需要的各種權限—添加地圖控件—初始化全局變量,配置完以上步驟即可加載百度地圖。
2.3.3 附近搜索和路線規劃 旅游過程中離不開住宿、餐飲,想要查看景點周邊感興趣的場所、大型設施,就需要用到城市的興趣點(point of interest,POI)數據庫,這里使用的是百度地圖的搜索方法[3-4]。
路徑規劃實現類為RouteAcitvity類,系統首先例化一個路線規劃檢索[5-6],使用 OnGetRoutePlan?Result Listener設置路徑檢索監聽,當輸入目標起始 點時,使用 DrivingRoutePlanOption()、Transi?tRoutePlanOption()、WalkingRoutePlanOption()完成自駕、公交、步行三種路徑規劃檢索,百度地圖會自動返回結果,監聽會獲取到結果并通過onGet?DrivingRouteResult()、onGetTransitRouteResult()、onGetWalking RouteResult()在地圖上顯示線路;同時使用DrivingRouteLine.DrivingStep()獲取繪制路線節點,當用戶點擊節點時pop彈窗自動顯示具體路線走向,代碼流程如圖2所示。
附近搜索實現類為SearchActivity類,先初始化百度地圖的搜索模塊[7-8],通過 PoiSearch.newIn?stance()創 建 POI 檢 索 實 例[9],調 用 setOnGet?PoiSearchResultListener完成附近興趣點(POI)監聽,接著使用searchInCity方法發起檢索請求,百度地圖會自動返回結果,監聽會獲取到結果,并且通過onGetPoiResult函數在地圖上顯示出來,完成附近興趣點搜索功能[10-12],代碼流程如圖3所示。

圖2 路徑規劃流程圖Fig.2 Flowchart of route planning

圖3 附近搜索流程圖Fig.3 Flowchart of searching nearby places
系統設置一個類用來實現語音講解以及文字說明。實現類為VoiceActivity類[5],在ExpainActivity類中通過SDK接口完成定位初始化,通過在百度地圖獲取景點的經緯度設置坐標點[13-14]。當用戶走到景點所在位置時,使用mBaiduMap.setOnMarkerClickListener方法對標記點監聽,通過判斷標記的名字使用 intent.putExtra(“location”,“ligong”)將地點名稱放入intent中進行跳轉到VoiceActivity類中;在VoiceActivity類中通過intent.getStringExtra(“location”)讀取地點位置信息,對信息進行解析判斷出所點擊的標記是,然后使用mediaPlayer= MediaPlayer.create( )以 及mediaPlayer.start()實現語音講解的播放,同時根據信息對TextView顯示景點簡介。
實現光學字符識別(optical character recogni?tion,OCR)識別系統,首先,需要將用手機拍攝的圖片進行轉換成黑白圖像,接著將圖像進行切割識別,然后對識別的文字進行分析和使用,節省了后期人力修改的時間。實現OCR識別從圖像到文本輸出,需要經歷圖像二值化、文字切割、特征提取、對比識別,最后人工校正輸出識別結果[7]。
該功能的實現類為OCRActivity類,通過Cam?eraButtonListener方法對拍照動作進行監聽,通過使用 intent.putExtra(“path”,“name”)設定拍照圖片的路徑和名稱,跳轉到Android自帶函數startAc?tivityForResult()實現拍照功能,拍攝結束后,在on?ActivityResult方法重新開辟新的線程進行使用ImgPretreatment類來進行圖片的處理,ImgPretreat?ment類使用Bitmap converyToGrayImg方法用來轉化圖像為灰度圖,Bitmap doPretreatment方法進行預處理,Bitmap selectBinarization方法進行二值化處理。處理完圖片后,調用doOcr方法從而使用谷歌公司的一個開源OCR引擎Tesseract對處理完的圖像進行識別,該開源的OCR引擎需要將識別數據庫放置在手機SD卡中[15],代碼流程如圖4所示。
OCR引擎識別后,可得到文本,然后對文本進行翻譯。調用fanyi.setOnClickListener監聽,同時將識別后文本通過intent.putExtra(“fanyiwen?ben”,textResult)傳遞到 intent,跳轉到 TransActivi?ty類里,通過 intent.getStringExtra(“fanyiwenben”)取得識別后文本。點擊翻譯按鈕,進入百度翻譯提供的接口,通過URL向百度翻譯提交JSON數據報,經由百度翻譯后臺處理,發送數據報給該系統,系統通過解析數據報得到其中翻譯的結果,提取出所需要的結果將其顯示在手機界面上。流程如圖5所示,景點日文和英文介紹的翻譯結果如圖6、圖7所示。

圖4 拍照識別流程圖Fig.4 Flowchart of OCR

圖5 翻譯流程圖Fig.5 Flowchart of language interpretation

圖6 日文翻譯界面Fig.6 Interface of Japanese interpretation

圖7 英文翻譯界面Fig.7 Interface of English interpretation
綜上所述,系統針對旅游景點導覽開發的基于Android 5.0.1平臺,使用eclipse開發工具、Java開發語言,調用百度地圖SDK,實現了城市介紹、附近搜索及路線規劃、語音講解、拍照翻譯等功能。實驗表明在手機客戶端安裝apk安裝包,完全可以實現上述功能,特別適用于游客在多語種國外景點觀光情況下的一站式旅游服務,可以對景點介紹文字及菜單進行實時翻譯,且文字識別準確率達到95%以上。但同時本系統還有一些不足之處有待后續開發,如旅游導覽不能根據位置自動播放語音,需要手工點擊標記,后續可以調用位置管理器的靠近提醒技術自動觸發景點的文字語音播報。
[1] 楊盼,萬隆君,徐軼群.基于Android和Openlayers的旅游導覽系統[J]. 集美大學學報,2014(19):236-240.
[2] 張國平,王建璽,董桂林.基于Android平臺的手機地圖服務設計[J]. 計算技術與自動化,2015,34(1):111-115.
[3] RICARDO A,LINO F,ALMEIDA A,et al.Mobile application to provide personalized sightseeing tours[J].Journal of Network and Computer Applications,2014(41):56-64.
[4] 宋永生.基于Android的導游系統的設計與實現[J].信息技術,2012(4):107-112.
[5] 賈文杰,孫志峰.基于Android平臺的智能導游系統[J]. 機電工程,2012,28(10):1257-1259.
[6] CHU T H,LIN M L,CHANG C H.mGuiding(mobile guiding) -usingamobileGIS app forguiding[J].Scandinavian Journal of Hospitality and Tourism,2012,12(3):269-283.
[7] 劉淼,楊鎮豪,謝韻玲,等.Android圖文同步識別系統的設計和實現[J]. 計算機工程與設計,2014,35(6):2207-2213.
[8] 張笑冬.基于mAppWidget的Android平臺景區導覽系統的設計與實現[D].天津:天津大學軟件學院,2015.
[9] 姚林邑.基于RFID的景點導覽機設計與實現[D].成都:電子科技大學通信與信息工程學院,2016.
[10] 富佳鑫.基于嵌入式GIS的智能導游系統研究與設計[D].北京:中國地質大學計算機學院,2013.
[11] 劉建林.景區智慧旅游管理系統設計與實現[D].長沙:湖南大學軟件學院,2016.
[12] 黃開建.基于GPS定位技術的智能導覽系統關鍵技術硏究[D].揚州:揚州大學信息工程學院,2015.
[13] SAGNIK B,PANBU M B.Design and development of mobile campus,an Android based mobile application for university campus tour guide[J].International Journal of Innovative Technology and Exploring Engineering,2013,2(3):25-29.
[14] REDDY B S N,PRAVEEN S.Mobile location-based tour guide system [J].International Journal of Computer Trends and Technology,2013,4(5):1287-1290.
[15] SANCHEZ M C R,ALVAREZ M A M,MARTIN E,et al.Accessible smartphones for blind users:A case study for a wayfinding system[J].Expert Systems with Applications,2014,41:7210-7222.