解決Android原生定位的坑
Android原生定位的代碼網(wǎng)上已經(jīng)很多了,就不貼出來。
簡單了解下:
GPS_PROVIDER:通過手機內(nèi)置的GPS芯片,利用衛(wèi)星獲取定位信息。位置監(jiān)聽、衛(wèi)星狀態(tài)監(jiān)聽很耗電且室內(nèi)定位很不準(zhǔn)確。
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當(dāng)然好用了,但是要注意獲取的經(jīng)緯度是經(jīng)過了偏移的,只適配自己的地圖。比如用百度地圖SDK獲取的經(jīng)緯度在百度地圖上是準(zhǔn)確的,在高德地圖上顯示可能就會有一定的偏差。如果經(jīng)緯度和地圖不是成套使用就要考慮偏移的情況,而不是獲取的經(jīng)緯度不準(zhǔn)確。第三方SDK都有自己的網(wǎng)絡(luò)定位數(shù)據(jù),他們的網(wǎng)絡(luò)定位不僅僅是依靠服務(wù)器查詢,還有一套算法支撐,所以室內(nèi)定位比較準(zhǔn)確。
有些項目不使用第三方SDK,只能用原生方法獲取定位。NETWORK_PROVIDER 被迫放棄,PASSIVE_PROVIDER 只能是輔助,GPS_PROVIDER 需要增加精度。
我是這么處理的:
1. addGpsStatusListener 監(jiān)聽衛(wèi)星狀態(tài),當(dāng)信號值 > 1 的衛(wèi)星數(shù)量在4顆以上,才可以使用 GPS_PROVIDER;

2. 速度>0.5 且 精度 < 50 才會被認(rèn)為是有效的經(jīng)緯度數(shù)據(jù)(我的項目中設(shè)備是移動的)。
補充:使用Android自帶api定位失敗的原因
前奏:使用高德百度等定位,集成那么麻煩。為何不使用android自帶的api進行定位。省時省力?
1.使用自帶定位很簡單,如下圖

2.繼承LocationListener

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

但是,問題來了。
位置提供者就兩種方式,要么network,要么gps.

問題:
1.使用gps,收不到任何回調(diào)。
2.使用network,一直回調(diào)onProviderDisabled
原因:那就是當(dāng)你在室內(nèi)開發(fā)時,你的手機根本就沒法獲取位置信息,你叫系統(tǒng)如何將位置信息通知給你的程序。
所以要從根本上解決這個問題,就要解決位置信息獲取問題。
剛剛也提到了,只有NETWORK_PROVIDER這種模式才是室內(nèi)定位可靠的方式,只不過由于大陸的怪怪網(wǎng)絡(luò),且大部分廠商也不會用google的服務(wù),這種定位方式默認(rèn)是沒法用的。
那怎么辦?好辦,找個替代的服務(wù)商就可以了,百度的位置信息sdk就可以解決這個問題。
它的基本原理在上面已經(jīng)提到過了,就是搜集你的wifi節(jié)點信息和你的手機基站信息來定位。
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Android實現(xiàn)Camera2預(yù)覽和拍照效果
這篇文章主要為大家詳細介紹了Android開發(fā)之一個類實現(xiàn)Camera2預(yù)覽和拍照效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
Android高效加載大圖、多圖解決方案 有效避免程序OOM
這篇文章主要為大家詳細介紹了Android高效加載大圖、多圖解決方案,有效避免程序OOM,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10
詳解如何從原生Android 跳轉(zhuǎn)到hbuilder項目
這篇文章主要介紹了從原生Android 跳轉(zhuǎn)到hbuilder項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-08-08
Android快速開發(fā)之定制BaseTemplate
這篇文章主要為大家詳細介紹了Android快速開發(fā)之定制BaseTemplate的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-02-02
AndroidStuio插件開發(fā)適用于jetbrains全家桶
這篇文章主要介紹了AndroidStuio插件開發(fā)適用于jetbrains全家桶,本文通過實例給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-12-12
Flutter中如何加載并預(yù)覽本地的html文件的方法
這篇文章主要介紹了Flutter中如何加載并預(yù)覽本地的html文件的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
Flutter?彈性布局基石flex算法flexible示例詳解
這篇文章主要為大家介紹了Flutter?彈性布局基石flex算法flexible示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12
Android TabWidget切換卡的實現(xiàn)應(yīng)用
本篇文章小編為大家介紹,Android TabWidget切換卡的實現(xiàn)應(yīng)用。需要的朋友參考下2013-04-04

