程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2ME >> 定位API開發指南——例子:移動應用開發的定位和定位檢測(1)

定位API開發指南——例子:移動應用開發的定位和定位檢測(1)

編輯:J2ME

 

4 例子:移動應用開發的定位和定位檢測

Location and orIEntation detection in mobile application development

MIDP: Location API Example - Tourist Route MIDlet(可以從http://www.forum.nokia.com/info/sw.nokia.com/id/f7e8ad78-7898-4053-ab83-74c147923866/

MIDP_Location_API_Example_Tourist_Route_v1_0.zip.Html下載)的目的,正如指導書中描述的,目的是為了從技術的角度說明API定位的方法。MIDLet通過Location Provider更新位置信息(比如GPS模式)。這些信息將顯示給使用者,並附帶地址信息傳遞給指定的編輯器。但是MIDLet並不是真實的指導,如果對MIDLet感興趣,跳過本部分直接閱讀18頁。

注意:下面的實例在SerIEs 40平台不能正常執行。

4.1 MIDLet的用戶接口

實例中MIDLet所包含的API特性並非支持所有的設備。比如,不支持方向源的設備在TouristRouteMIDLet中就不會有cmpass特性。下面的圖標說明了典型的MIDLet使用流程。開始,MIDLet嘗試連接定位提供商。這個過程中,實際設備中將顯示發現的所有蘭芽設備的列表。但是比如PrototypeSDK模擬器將會跳過藍牙設備的顯示,而是馬上開始搜索位置信息。當發現了可以連接的設備,TouristRoute MIDlet跳轉到Route vIEw開始更新位置信息。

選擇EDITOR命令,程序跳轉至陸標編輯界面。這個狀態下,用戶可以為當時設備編輯位置信息。選擇Save命令,設備的位置信息將被存儲到陸標庫中。命令選擇界面將跳轉到路標顯示界面。陸標顯示界面將會顯示所有存在的陸標。

圖7:MIDLet啟動到陸標的增加的屏幕顯示流程

支持orIEntation的設備和模擬器還會有一個Commpass命令。選擇Compass命令跳轉到commpass界面。選擇Pitch和Roll命令將會分別跳轉到Pitch和Roll界面。本指導中的API支持roitation。

從代碼的角度來看,TouristRoute的使用從TouristUI開始,該程序顯示了設備目前的位置。從TouristUI,用戶既可以跳轉到LandMarkEditorUI類也可以調准到CompassUI類。跳轉到CompassUI需要設備對oritation的支持。CompassUI類可以調轉到PitchRollUI類。另外,所以得UI類都支持跳轉到剛才的界面。請看下圖:

圖8:MIDLET的UI變化說明

UI類的主要功能如下:

l         LandmarkEditorUI列舉所有陸標。也可以創建和刪除一個路標。

l         TouristUI顯示設備當前位置信息,比如經度緯度坐標,移動速度和距離。

l         CompassUI描繪了一個界限。另外,顯示了界限的相關信息。

l         PitchRollUI,如果設備支持3D探測器,將引導顯示設備pitch和roll信息。

4.2 需求

本實例中需要S60 SDK支持包

注意:本指導中案例不能在SerIEs 40平台下運行。

4.3 運行Tourist Route MIDlet

TouristRoute MIDlet實例中,所有UI類都在com.nokia.example.location.tourist.ui包中。模版類可以從com.nokia.example.location.tourist.model中找到。本類中,只有模版中的類可以正常使用API。模版類這一層的類是最值得關注的。UI層的類僅僅包含了MID特殊UI應用程序,但是對於學習如何使用API沒有什麼幫助。另外,命令控制邏輯是在UI類中編輯的。下面的圖標說明了他們之間的關系。

圖9:TouristRoute MIDlet類編程

模版層類和接口包括以下功能:

l         ControlPoints處理所有與陸標相關的任務;

l         TouristData通過LoacationListener和ProximityListener監聽事件,通過TouristUI類處理數據更新。

l         ProviderStatusListener是一個用來處理定位提供商的接口。另外,該接口還用來處理位置更新。TouristRouteMIDlet監聽事件也通過這個接口。

ConfigurationPorvider類用來在程序開始的時候處理LOcationProvider選擇。一個定位服務提供商選擇了以後,ProviderSelectedListener接口就將一個信號返回給MIDlet。另外,oritation支持和orIEntation類訪問也屬於這個類。

啟動過程

TouristRoute MIDlet啟動的時候自動搜索定位服務。當發現定位服務和MIDLet可以接受信息更新的時候,就可以使用MIDLet了。本節的目的就是為了說明TouristRoute MIDlet的啟動流程。

通過基於網絡的定位服務可能需要付費。TouristRoute首先掃描免費的定位服務,如果沒有發現,TouristRoute詢問用戶是否使用該定位服務。

下面的圖表演示了如何搜索定位服務。首先,MIDLet搜索免費定位服務,如果沒有發現,MIDLet詢問用戶是否搜索付費定位服務。如果免費定位服務成功搜索,掃描就結束。當發現了定位服務並選擇了,MIDLet運行providerSelectedEvent()。

同時,MIDLet從注冊的定位服務中注冊。第一次計算可能耗費時間比較長。這也是locationUpdated()運行在TouristData類的時候時間比較長的原因。當運行第一個locationUpdated()事件的時候,firstLocationUpdateEvent()函數就被傳送到了TouristMIDlet類。就在這個階段,UI應用程序變成可見。

注意:有些定位程序可能耗費時間比較長,也可能因為制作的不同而狀態不同。也就是說,第一個定位啟動的時候可能需要很長時間。


圖10:MIDLet啟動和定位搜索的流程

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved