国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

解決Android原生定位的坑

瀏覽:5日期:2022-09-20 18:11:40

Android原生定位的代碼網(wǎng)上已經(jīng)很多了,就不貼出來。

簡單了解下:

GPS_PROVIDER:通過手機內(nèi)置的GPS芯片,利用衛(wèi)星獲取定位信息。位置監(jiān)聽、衛(wèi)星狀態(tài)監(jiān)聽很耗電且室內(nèi)定位很不準確。

NETWORK_PROVIDER:網(wǎng)絡(luò)定位通過基站和WiFi節(jié)點,利用節(jié)點id在定位數(shù)據(jù)服務(wù)器查詢位置信息。但是國內(nèi)網(wǎng)絡(luò)不允許,且有消息稱Google已不提供該服務(wù)。so網(wǎng)上出現(xiàn)的此種方式獲取定位信息不可用,也就是說NETWORK_PROVIDER在國內(nèi)不可用。

PASSIVE_PROVIDER:被動定位,其他應(yīng)用比如百度、高德等使用了定位,系統(tǒng)會更新定位信息并保存下來,通過此方式可以獲取最近一次的位置信息。

第三方SDK當然好用了,但是要注意獲取的經(jīng)緯度是經(jīng)過了偏移的,只適配自己的地圖。比如用百度地圖SDK獲取的經(jīng)緯度在百度地圖上是準確的,在高德地圖上顯示可能就會有一定的偏差。如果經(jīng)緯度和地圖不是成套使用就要考慮偏移的情況,而不是獲取的經(jīng)緯度不準確。第三方SDK都有自己的網(wǎng)絡(luò)定位數(shù)據(jù),他們的網(wǎng)絡(luò)定位不僅僅是依靠服務(wù)器查詢,還有一套算法支撐,所以室內(nèi)定位比較準確。

有些項目不使用第三方SDK,只能用原生方法獲取定位。NETWORK_PROVIDER 被迫放棄,PASSIVE_PROVIDER 只能是輔助,GPS_PROVIDER 需要增加精度。

我是這么處理的:

1. addGpsStatusListener 監(jiān)聽衛(wèi)星狀態(tài),當信號值 > 1 的衛(wèi)星數(shù)量在4顆以上,才可以使用 GPS_PROVIDER;

解決Android原生定位的坑

2. 速度>0.5 且 精度 < 50 才會被認為是有效的經(jīng)緯度數(shù)據(jù)(我的項目中設(shè)備是移動的)。

補充:使用Android自帶api定位失敗的原因

前奏:使用高德百度等定位,集成那么麻煩。為何不使用android自帶的api進行定位。省時省力?

1.使用自帶定位很簡單,如下圖

解決Android原生定位的坑

2.繼承LocationListener

解決Android原生定位的坑

3.如果獲取到就解析數(shù)據(jù)

解決Android原生定位的坑

但是,問題來了。

位置提供者就兩種方式,要么network,要么gps.

解決Android原生定位的坑

問題:

1.使用gps,收不到任何回調(diào)。

2.使用network,一直回調(diào)onProviderDisabled

原因:那就是當你在室內(nèi)開發(fā)時,你的手機根本就沒法獲取位置信息,你叫系統(tǒng)如何將位置信息通知給你的程序。

所以要從根本上解決這個問題,就要解決位置信息獲取問題。

剛剛也提到了,只有NETWORK_PROVIDER這種模式才是室內(nèi)定位可靠的方式,只不過由于大陸的怪怪網(wǎng)絡(luò),且大部分廠商也不會用google的服務(wù),這種定位方式默認是沒法用的。

那怎么辦?好辦,找個替代的服務(wù)商就可以了,百度的位置信息sdk就可以解決這個問題。

它的基本原理在上面已經(jīng)提到過了,就是搜集你的wifi節(jié)點信息和你的手機基站信息來定位。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。如有錯誤或未考慮完全的地方,望不吝賜教。

標簽: Android
相關(guān)文章:
主站蜘蛛池模板: 上饶县| 神木县| 边坝县| 滕州市| 万载县| 弋阳县| 太湖县| 扎鲁特旗| 秭归县| 大田县| 怀远县| 漾濞| 尤溪县| 新乡县| 营山县| 丹寨县| 和龙市| 鹰潭市| 无为县| 佳木斯市| 兴和县| 霍林郭勒市| 周至县| 泰州市| 泰和县| 齐河县| 道孚县| 丘北县| 永城市| 子洲县| 涟源市| 曲麻莱县| 巫溪县| 克东县| 浦江县| 平阳县| 桓仁| 昭通市| 雷波县| 额尔古纳市| 商都县|