Android中獲取當前位置資訊

imesong發表於2014-03-05

這篇教程主要介紹了在Android平臺上如何使用服務完成定位功能。眾所周知,Android裝置的當前位置資訊,對開發創新性App、解決人們日常生活問題有極大幫助。在Android平臺開發定位相關的應用程式,需要位置提供者。有兩種型別的位置提供者:

  1. GPS定位
  2. 網路定位

以上兩種型別,任何一種都可以獲得使用者或者使用者裝置的位置資訊。但是,它們各有優劣,推薦兩者同時使用。GPS 定位,在室內反應遲緩,比較耗時;網路定位,在沒有網路的時候無法獲得位置資訊。

GPS定位 VS 網路定位

  • 獲取位置座標時,網路定位比GPS定位稍快。
  • GPS在室內定位非常緩慢,並且比較耗電。
  • 網路定位依賴蜂窩網路,獲取的是最近的網路基站的位置。
  • GPS定位資料相對精確,得到我們當前的位置資訊。

獲取定位資料

  1. Manifest檔案中授權,接收定位資料。
  2. 建立LocationManager例項,將其指向定位服務。
  3. LocationManager請求定位資料。
  4. 定數資料改變時,LocationListener接收更新的定位資料。

授權接收定位更新資料

Manifest檔案中獲取如下許可權,然後可以通過定位提供者獲得定位資料:

定位提供者必需要有INTERNET許可權和ACCESS_FINE_LOCATION許可權。同時,網路定位還需要ACCESS_COARSE _LOCATION許可權。

建立LocationManager例項,指向定位服務

無論何種型別的Android後臺Service,需要獲得其引用才能使用。同樣,通過getSystemService()方法獲得定位服務的引用,然後將這個引用將新增到新建立的LocationManager例項中,示例如下:

從LocationManager請求當前位置

穿件位置服務引用後,通過LocationManagerrequestLocationUpdates()方法可以請求位置更新資訊。呼叫方法時,需要位置提供者、最後一次更新距今的時間(秒)、距離和LocationListener物件。呼叫後LocationListener物件會根據位置進行更新。

通過LocationListener,獲得更新位置資料

根據指定的距離或時間間隔,LocationListener會收到更新通知。

示例:獲取當前位置

這個示例通過GPS定位獲取當前位置資料。主要程式碼如下:

佈局檔案如下,

Manifest檔案如下,

輸出效果

AndroidLocationOutput

提示:如果使用模擬器執行這個示例,需要將準確的經緯度傳送到模擬器。

如何傳送經緯度到模擬器

  • 開啟Eclipse中 DDMS 檢視(Window–>Open Perspective)
  • 選擇模擬器
  • 選擇模擬器控制選項
  • 在位置控制皮膚,選擇手動輸入,新增經緯度資料,點選“傳送”

相關文章