初探Android平臺上的定位服務(GPS) html
特別聲明:如下全部操做都別忘記了加上權限: java
LocationManager android
經過LocationManager能夠實現設備的定位、跟蹤和趨近提示。它不須要你直接來實例化,咱們能夠經過Context.getSystemService(Context.LOCATION_SERVICE). 來得到LocationManager實例。 git
經常使用屬性和方法 網絡
屬性和方法 app |
描述 ide |
GPS_PROVIDER ui |
靜態字符串常量,代表LocationProvider是GPS this |
NETWORK_PROVIDER spa |
靜態字符串常量,代表LocationProvider是網絡 |
addGpsStatusListener(GpsStatus.Listener listener) |
添加一個GPS狀態監聽器 |
addProximityAlert(double latitude, double longitude, float radius, long expiration, PendingIntent intent) |
添加一個趨近警告 |
getAllProviders() |
得到全部的LocationProvider列表 |
getBestProvider(Criteria criteria, boolean enabledOnly) |
根據Criteria返回最適合的LocationProvider |
getLastKnownLocation(String provider) |
根據Provider得到位置信息 |
getProvider(String name) |
得到指定名稱的LocationProvider |
getProvider(boolean enableOnly) |
得到可利用的LocationProvider列表 |
removeProximityAlert(PendingIntent intent) |
刪除趨近警告 |
requestLocationUpdates(String provider, long minTime, float minDistance, PendingIntent intent) |
經過給定的Provider名稱,週期性地通知當前Activity |
requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener) |
經過給定的Provider名稱,並將其綁定指定的LocationListener監聽器 |
|
|
LocationProvider
LocationProvider用來描述位置提供者,設置位置提供者的一些屬性。能夠經過Criteria類來爲LocationProvider設置條件,得到合適的LocationProvider。
屬性或者方法名稱 |
描述 |
AVAILABLE |
靜態整型常量,標示是否可利用 |
OUT_OF_SERVICE |
靜態整型常量,不在服務區 |
TEMPORAILY_UNAVAILABLE |
靜態整型常量,臨時不可利用 |
getAccuarcy() |
得到精度 |
getName() |
得到名稱 |
getPowerRequirement() |
得到電源需求 |
hasMonetaryCost() |
花錢的仍是免費的 |
requiresCell() |
是否須要訪問基站網絡 |
requiresNetWork() |
是否須要Intent網絡數據 |
requiresSatelite() |
是否須要訪問衛星 |
supportsAltitude() |
是否可以提供高度信息 |
supportsBearing() |
是否可以提供方向信息 |
supportsSpeed() |
是否可以提供速度信息 |
實例:獲取設備上的全部的LocationProviders
Location類
它用於描述當前設備的地理位置信息,包括了經緯度、方向、高度和速度等。能夠經過LocationManager.getLastKnownLocation(String provider)方法能夠得到Location實例
其常見方法和屬性:
方法 |
描述 |
public float getAccuracy () |
得到精確度 |
public double getAltitude () |
得到高度 |
public float getBearing () |
得到方向 |
public double getLatitude () |
獲取經度 |
public double getLongitude () |
得到緯度 |
public float getSpeed () |
得到速度 |
實例:獲得你本身的位置
實例:追蹤位置:
requestLocationUpdates(String provider,long minTime,float minDistance,LocationListener listener)
關於參數minTime,minDistance的說明是指當用戶位置改變多少緯度時候多長時間更新下這個用戶的位置
實例:獲取最好的LocationProivider
Criteria類
它封裝了用於得到LocationProvider的條件,能夠根據指定的Criteria條件來過濾得到LocationProvider
及經常使用屬性和方法以下:
屬性或訪求名稱 |
描述 |
ACCERACY_COARSE |
粗糙精確度 |
ACCURACY_FINE |
較高精確度 |
POWER_HING |
用電高 |
POWER_LOW |
用電低 |
isAlititudeRequried() |
返回Provider是否須要高度信息 |
isBearingRequired() |
返回Provider是否須要方位信息 |
isSpeedRequried() |
返回Provider是否須要速度信息 |
isCostAllowed() |
是否容許產生費用 |
setAccuracy(int accuracy) |
設置Provider的精確度 |
setAltitudeRequired (boolean altitudeRequired) |
設置Provider是否須要高度信息 |
setBearingRequired (boolean bearingRequired) |
設置Provider是否須要方位信息 |
setCostAllowed (boolean costAllowed) |
設置Provider是否產生費用 |
setSpeedAccuracy (int accuracy) |
設置Provider是否須要速度信息 |
getAccuracy() |
得到精度 |
總結(再看GPS):
從以上知識咱們能夠知道,要想使用Android平臺下的GPS服務咱們就得用LocationManager這個系統服務,咱們能夠經過Context.getSystemService(Context.LOCATION_SERVIER)來獲得這個LocationManager對象實例,有了這麼一個服務後,咱們能夠經過LocationProvider來描述位置提供者,爲了某種須要咱們又用到了一個Criteria類來設置知足咱們本身的最佳要求,那麼這一切都搞定的時候,獲取咱們本身所在的位置咱們就用到了Location類,這個類用來獲取咱們本身的位置,例如:經緯度。