Android定位功能(二)

2021-06-15 07:45:10 字數 2233 閱讀 1211

在前文android定位功能(一)中,已經大致介紹了一下在android平台中,和定位功能相關的類,並舉例獲取了位置資訊。但是前文是基於criteria定製了乙個標準,通過getbestprovider()方法由android系統自動獲取最符合criteria的locationprovider,從而實現了定位功能。這樣的做法能最大限度的保證定位功能的可實現性,但是卻無法保證獲取到的位置資訊有最大的準確度。因為除了gps外,其他定位方式都或多或少存在著位置偏移。

在實現gps定位前,先了解一下gps的部分特性:

1. gps定位需要依靠3顆或3顆以上的衛星。

2. gps定位受環境影響較大,在晴朗的空地上,較容易搜尋到衛星,而在室內通常是無法搜尋到衛星的。

3. gps定位需要使用gps功能模組,而gps功能模組的耗電量是巨大的。

在android系統中,實現gps定位的思路應該是:

1. 獲取gps的location provider。

2. 講此provider傳入到requestlocationupdates()方法,讓android系統獲知搜尋位置方式。

3. 建立實現了gpsstatus.listener介面的物件,重寫ongpsstatuschanged()方法,向locationmanager新增次***,檢測衛星狀態。(可選步驟)

根據以上思路,仿照android定位功能(一)中的例子,可以很容易的得到以下實現**:(此**的實現前提是gps功能模組處於開啟狀態) 

1

public

class

mainactivity

extends

activity

21//

增加gps狀態***

22locationmanager.addgpsstatuslistener(gpslistener);

2324

//直到獲得最後一次位置資訊為止,如果未獲得最後一次位置資訊,則顯示預設經緯度

25//

每隔10秒獲取一次位置資訊

26while

(true

)else

36try

catch

(interruptedexception e) 41}

42}4344

private

gpsstatus.listener gpslistener

=new

gpsstatus.listener()

67toast.maketext(mainactivity.

this, "

satellite count:"+

count, toast.length_short).show();

68break;69

//停止定位事件

70case

gpsstatus.gps_event_stopped:

71log.d(

"location",

"gps_event_stopped");

72break;73

}74}75

};76

7778

//建立位置***

79private

locationlistener locationlistener

=new

locationlistener()

8586

//provider失效時呼叫

87@override

88public

void

onproviderdisabled(string provider)

9192

//provider啟用時呼叫

93@override

94public

void

onproviderenabled(string provider)

9798

//狀態改變時呼叫

99@override

100public

void

onstatuschanged(string provider,

intstatus, bundle extras)

103};

104}

通過以上**中的注釋部分,可以清晰的知道android定位功能裡相關方法的具體含義。希望對大家有用。

另外,因為gps的自身特性,此**在室內幾乎無法定位,所以建議再真正的實際專案裡,至少使用network和gps兩種不同的location provider實現定位功能。

Android定位功能總結

前言 步驟一 宣告許可權 android name android.permission.access fine location 注 在android 6.0以上,除了在androidmanifest.xml中進行許可權的宣告之外,這個許可權還需要在 去進行校驗,徵詢使用者的同意 步驟二 獲取lo...

iOS 定位功能

最近做的專案裡用到了定位,不是地圖定位,只是單純的獲取經緯度,甚至都不用轉化為具體的地理資訊,原本以為很好做的,但是寫了幾個小時才搞好,中間遇到幾個問題,現在記下來吧。首先乙個問題是,在模擬器中,遵守了協議,設定了 卻不走 方法,為什麼呢,這是因為xcode公升級造成的定位許可權設定問題。公升級xc...

android 定位服務

目前,對於定位主要有三種實現方式 通過網路 基站和gps來獲取到所有玩家的經緯度,然後傳送給伺服器計算,以此來實現附近的人資訊展示功能。最開始做的時候,使用了android自帶的定位服務 locationmanager locationmanager locationmanager getsyste...