1. 程式人生 > >Android地理位置獲取的那些坑

Android地理位置獲取的那些坑

我算是搞明白了,無論是Framework還是Application,只要跟硬體相關的東西都有各種坑的存在。
所幸,也正是這些坑的存在,讓這個行業形成了一道道門檻。 嗯,是這樣的
坑在最後面

Android地理位置獲取最佳實踐

國外有Google Service的App

如果你遇到的正好是這種App,那你太榮幸了,google service的play-service-location lib正好解決你的問題,並且用起來超級簡單,目前11.0.1版本包含你需要的類,10.0.1是不包含的。
使用方法: https://developer.android.com/training/location/retrieve-current.html

牆內的App

百度地圖或高德地圖的SDK

用過百度地圖的都知道,它獲取Location的方式非常簡單,並且還有現成完善的Demo可以用。百度網路定位據說採用的是IP和基站,我們沒那麼多時間自己去搞這些玩意。

監聽位置的更新

以為獲取位置資訊就能獲取到

通過LocationManager 的方法getLastKnownLocation(String provider),直接獲取的就是null

以為更新下位置就能獲取到最新的位置

requestLocationUpdates呼叫後就能從listener獲取到位置更新麼,
想多了,得等一會。當然,如果你不是在操場辦公,是在幾十層樓訊號嬌弱的地方辦公,那就等上半格小時到一個小時吧。當然在地鐵上更不要指望能獲取到位置更新。我還特地列印了位置更新的時間點,證明了我吃頓飯後才能收到位置更新。GPS指望不上,同時手機網路位置更新太慢,Nexus也是這樣。

如果室外需要GPS定位怎麼辦

你只能通過啟動Activity啟動到設定定位服務開啟的介面,是否開啟GPS還需要提醒使用者到裡面設定。如下進入系統定位服務設定。

Intent myIntent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(myIntent);