星期日, 10月 16, 2011

LocationManager LocationProvider LocationListener

Android應用程式學習筆記

LocationManager
此類提供存取系統定位服務,這些服務允許應用程式定期獲得裝置地理位置的更新,或是啟動應用程式指定的Intent,當裝置接近預設的地理位置時。 
你無須直接實現此類,透過context.getSystemService(Context.LOCATIO_SERVICE)取得LocationManager。
以下介紹幾個此類中的方法。
 public LocationProvider getProvider(String name)-取得名稱為name的LocationProvider。如果沒有此LocationProvider,回傳值為null。
public List<String> getProviders(boolean EnableOnly)-取得一組LocationProviders。參數值為true表示只回傳目前可用的LocationProvider。
public Location getLastKnownLocation(String provider)-回傳provider最後得知的位置。 
public void requestLocationUpdates(String provider , long minTime , float minDistance , LocationListener listener)-註冊目前的activity定期接受provider的通知,隨著當前位置不同或是狀態更新定期地呼叫LocationLListener。它也許要花一些時間接收最近期的位置,如果需要立即接收位置,應用程式可以利用getLastKnownLocation(String)方法。用戶關閉provider的情況下,更新將停止,並且呼叫onProviderDisable(String)方法。當provider再次啟動,onProviderEnable(String)將被呼叫,且位置更新將再次啟動。利用minTime和minDistance參數控制通知的頻率。如果minTime參數值大於0,LocationManager有機會在位置更新之間休息minTime毫秒來保存電力;如果minDistance參數值大於0,裝置移動超過minDistance距離,廣播一個位置。想盡可能的獲得通知,就將兩個參數設為0。後台服務應該留意設定充分的minTime,如此裝置不會消耗太多電力在保持GPS或是無線電台,特別是,不建議minTime數值小於6000毫秒。
LocationProvider
Location provider提供有關裝置的地理位置的定期報告,每個提供器有一組標準,在標準之下也許可以使用。舉例,一些提供器需要GPS硬體設備及許多衛星的能見度;其他需要蜂巢式無線電,或是存取特定載體的網路,或是網路。它們也有不同的電池消耗特性或是成本。
LocationListener
利用於接收當位置改變時LocationManager的通知,利用reuqestLocationUpdates(String , long , float , LocationListener)方法將監聽器註冊到位置管理服務(LocationManager)。
public void onLocationChanged(Location location)-當位置改變時呼叫此方法。
public void onProviderEnable(String provider)-當提供器啟用時呼叫此方法。
public void onProviderDisable(String provider)-當提供器關閉時呼叫此方法。
public void onStatusChanged(String provider , int status , Bundle extras)-當provider狀態改變時呼叫此方法。
 

沒有留言:

張貼留言