天天看點

【Android Developers Training】 103. 查詢目前地點

注:本文翻譯自google官方的android

developers training文檔,譯者技術一般,由于喜愛安卓而産生了翻譯的念頭,純屬個人興趣愛好。

原文連結:

樣例代碼:

地點服務自動維護使用者目前的地點,是以你的應用所要做的事情就是在需要時去擷取它。地點的精确度是基于你所申請的地點查詢權限,以及目前裝置上激活的的位置傳感器。

地點服務會通過定位用戶端(定位服務類的一個執行個體:),将目前的位置發送給你的應用,所有地點資訊的請求都通過這一用戶端。

note: 在你開始這節課之前,請确定你的開發環境和測試裝置都已經配置正确。可以閱讀擷取更多這方面的資訊。

使用位置服務的應用必須請求定位權限。android有兩個定位權限:(粗定位)和(精定位)。你所選擇的權限決定了定位的精度。如果你隻請求粗定位,位置服務所範圍的地點資訊大緻會精确到一個城市街區。

如果請求,它也暗含了的權限。

例如,要添加,将下面的代碼作為元素的子元素:

二). 檢查google

play服務

位置服務是google

play服務apk的其中一部分。由于使用者裝置的狀态時難以預料的,你應該一直在你嘗試連接配接定位服務之前,檢查apk是否已經安裝。要檢查apk是否安裝,可以調用,它會傳回一個整形的結果碼,其含義可以參閱:。如果你遇到了一個錯誤,可以調用,來擷取一個本地的對話框,引導使用者執行正确地行為,之後将這一對話框顯示在一個上。這一對話框可能允許使用者解決目前的問題,此時google

play服務會發回一個結果到你的activity中。要處理這一結果,需要覆寫方法。

由于你一直需要在你的代碼多個地方檢查google

play服務,是以應該定義一個方法将檢查行為進行封裝,之後在每次連接配接嘗試之前進行檢查。下面的代碼片段包含了檢查google

play服務所需要的代碼:

在後續章節的代碼片段中,都會調用這一方法來驗證是否可擷取google play服務。

三).

定義位置服務回調函數

要擷取目前的地點,建立一個地點用戶端,将它連接配接至定位服務,之後調用它的方法。傳回的值是最佳最新的地理位置,它基于你應用所請求的權限以及目前裝置上已激活的定位傳感器。

在你建立定位用戶端之前,實作定位服務的接口,以和你的應用進行互動:

指定當定位連接配接上或者沒有連接配接上時,定位服務調用的方法。

指定當嘗試連接配接到定位用戶端時,如果出現了錯誤,定位服務調用的方法。這一方法使用之前定義的showerrordialog方法來顯示一個錯誤對話框,它嘗試使用google

play服務來解決這一問題。

下面的樣例代碼展示了如何指定接口和定義相關的函數:

現在回調函數已經就位了,建立定位用戶端并且連接配接它至定位服務。

你應該在方法中建立定位用戶端,之後再方法中進行連接配接。這樣定位服務就能在你的應用完全可見時維護目前的定位資訊。在方法中關閉連接配接,這樣當應用不可見時,定位服務就會停止更新地點。這樣的連接配接方式還能節省電量。

隻有在定位用戶端連接配接到了定位服務後,目前的地點才能維護。假設沒有其他應用連接配接到定位服務,如果你關閉了用戶端,過一段時間後,調用了,獲得的結果可能将是過期的。

例如:

五). 擷取目前地點

要擷取目前地點,調用,例如:

在下一節課中,将會向你展示從定位服務定期地接受地點更新的方法。