針對定位服務,android的API裡提供了LocationManager這麼一個類
通過getLastKnownLocation(String provider)以及requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)方法可以擷取到目前位置
此類提供兩種定位方式:GPS定位和網絡定位(基站+WIFI)
GPS定位的provider是LocationManager.GPS_PROVIDER, 網絡定位則是LocationManager.NETWORK_PROVIDER
不過這兩個接口都受限于系統設定,如下圖:http://www.cnblogs.com/jh5240/archive/2012/09/08/2676863.html(該部落格位址)
GPS定位的擷取方式通過getLastKnownLocation(String provider)傳對應參數,此時得到的Location并非目前的GPS位置資訊,而是上一次擷取到的位置資訊而
requestLocationUpdates才是真正去請求位置資訊的更新,可以了解為調用該方法後,會安裝指定的規則去收集GPS資訊,例如你請求locationManager.requestLocationUpdates
(LocationManager.GPS_PROVIDER,30 * 1000, 0, myListenGPS);則每隔三十秒鐘會收集一次GPS資訊,如果收集到的話,會儲存到系統存儲中(儲存至系統存儲屬個人了解)并
通知myListenGPS監聽器位置資訊改變同時調用監聽器onLocationChanged(Location location),那麼每次我們調用getLastKnownLocation事實上就是從這個系統存儲中擷取這個信
息,是以如果我們不調用此方法,getLastKnownLocation擷取到的就可能是N天以前的位置資訊了。 網絡定位的擷取方式其實同GPS差不多,儲存到系統存儲中的位置自然是跟
GPS分開的。 二者差別GPS定位準确,但在室内幾乎無法定位而導緻無法收集資訊,即有定位盲區;網絡定位偏差較大,但無盲區,隻要有網絡一般都可以收集的到;另外經過本
人手機實測,如果requestLocationUpdates的時候設定最少更新時間1S,最小更新距離為0的時候,GPS定位在有信号的情況下的确是每秒都重新整理位置,但網絡定位大概是四五十
秒更新一次(可能跟手機信号有關),如果把它設定為60秒的話,基本上兩種定位方式都在六七十秒後更新位置資訊是以這個時間還是有些偏差的,這點大家務必要注意部分童鞋
可能對網絡定位(基站+WIFI)不是很了解,簡單來說就是你目前接入WIFI就使用WIFI定位,目前接入2G或3G網就是基站定位其實針對基站和WIFI有單獨的定位方式,隻不過系
統幫我們封裝了這麼個智能的方法,好是好就是受限于設定開關為了達到實時定位的功能,現在廣為流傳的是GPS+基站定位方式,該基站定位即單獨的定位方式,不受開關限
制,是以在各個應用中用得比較多如何基站定位且聽下回分解