欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android獲取位置信息的方法

 更新時間:2019年05月24日 08:41:07   作者:kdkler  
這篇文章主要為大家詳細介紹了Android獲取位置信息的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Android獲取位置信息的具體代碼,供大家參考,具體內(nèi)容如下

1.位置服務的簡介:位置服務,英文翻譯為Location-Based Services,縮寫為LBS,又稱為定位服務或基于位置的服務,融合了GPS定位、移動通信、導航等多種技術(shù),提供與空間位置相關(guān)的綜合應用服務,基于位置的服務發(fā)展很迅速,涉及商務、醫(yī)療、工作和生活的各個方面,為用戶提供定位、追蹤和敏感區(qū)域警告等一系列服務。比如谷歌地圖,百度地圖,都需要通過位置服務。

2.Android平臺下支持提供位置服務的API,在開發(fā)過程中主要用到LocationManager和LocationProviders對象:

(1).LocationManager可以用來獲取當前的位置,追蹤設(shè)備的移動路線,或設(shè)定敏感區(qū)域,在進入或離開敏感區(qū)域時設(shè)備會發(fā)出特定警報 。

(2).LocationProviders則是提供定位功能的組件集合,集合中的每種組件以不同的技術(shù)提供設(shè)備的當前位置,區(qū)別在于定位的精度、速度和成本等方面 。

3.接下來將講述一個如何實現(xiàn)獲取位置的經(jīng)緯度,并且如果位置改變,如何通過位置的改變,經(jīng)緯度也發(fā)生變化的例子,這里以LocationManager對象為例:

(1).首先,第一步,獲取LocationManager對象,可以通過調(diào)用android.app.Activity.getSystemService()函數(shù)獲取,代碼如下:

String serviceString = Context.LOCATION_SERVICE;// 獲取的是位置服務
LocationManager locationManager = (LocationManager) getSystemService(serviceString);// 調(diào)用getSystemService()方法來獲取LocationManager對象

其中的LOCATION_SERVICE是Android支持的系統(tǒng)級服務,控制位置等設(shè)備的更新。

(2).在獲取到LocationManager對象后,還需要指定LocationManager的定位方法 ,然后才能夠調(diào)用LocationManager.getLastKnowLocation()方法獲取當前位置 ,目前LocationManager主要有兩種定位方法

GPS定位:可以提供更加精確的位置信息,但定位速度和質(zhì)量受到衛(wèi)星數(shù)量和環(huán)境情況的影響,需要android.permissions.ACCESS_FINE_LOCATION用戶權(quán)限。

網(wǎng)絡定位:提供的位置信息精度差,但速度較GPS定位要迅速 ,利用基站或WiFi訪問的提供近似的位置信息,需要具有如下權(quán)限:android.permission.ACCESS_COARSE_LOCATION 或 android.permission.ACCESS_FINE_LOCATION。

注:(使用GPS定位和網(wǎng)絡定位的LocationManager類的靜態(tài)常量不一樣,GPS定位的LocationManager類的靜態(tài)常量為:GPS_PROVIDER,網(wǎng)絡定位的LocationManager類的靜態(tài)常量為:NETWORK_PROVIDER,這兩個靜態(tài)常量在獲取當前位置時要用到。)

下面以使用GPS定位為例,獲取位置信息代碼如下:

String provider = LocationManager.GPS_PROVIDER;// 指定LocationManager的定位方法
Location location = locationManager.getLastKnownLocation(provider);// 調(diào)用getLastKnownLocation()方法獲取當前的位置信息

(3).通過調(diào)用Location中的getLatitude()和getLonggitude()方法可以分別獲取位置信息中的緯度和經(jīng)度,代碼如下:

double lat = location.getLatitude();//獲取緯度
double lng = location.getLongitude();//獲取經(jīng)度

 (4).在很多提供定位服務的應用程序中,不僅需要獲取當前的位置信息,還需要監(jiān)視位置的變化,在位置改變時調(diào)用特定的處理方法 ,其中LocationManager提供了一種便捷、高效的位置監(jiān)視方法requestLocationUpdates(),可以根據(jù)位置的距離變化和時間間隔設(shè)定,產(chǎn)生位置改變事件的條件,這樣可以避免因微小的距離變化而產(chǎn)生大量的位置改變事件 ,LocationManager中設(shè)定監(jiān)聽位置變化的代碼如下:

locationManager.requestLocationUpdates(provider, 2000, 10,locationListener);
// 產(chǎn)生位置改變事件的條件設(shè)定為距離改變10米,時間間隔為2秒,設(shè)定監(jiān)聽位置變化

接下來介紹上面這行代碼的各個參數(shù),第一個參數(shù)是我們之前指定LocationManager的定位方法,GPS定位或網(wǎng)絡定位,第二個參數(shù)指的是產(chǎn)生位置改變事件的時間間隔,單位為微秒,第三個參數(shù)指的是距離條件,單位為米,第四個參數(shù)是回調(diào)函數(shù),用于處理位置改變事件,即設(shè)置LocationListener監(jiān)聽器。總的來說,那一行代碼將產(chǎn)生位置改變事件的條件設(shè)定為距離改變10米,時間間隔為2秒。

(5).實現(xiàn)locationListener的代碼如下:

private final LocationListener locationListener = new LocationListener() {
 
  @Override
  public void onLocationChanged(Location location) {
   // TODO Auto-generated method stub
    
  }
 
  @Override
  public void onProviderDisabled(String arg0) {
   // TODO Auto-generated method stub
    
  }
 
  @Override
  public void onProviderEnabled(String arg0) {
   // TODO Auto-generated method stub
    
  }
 
  @Override
  public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
   // TODO Auto-generated method stub
 
  }
 
 };

接下來對上面實現(xiàn)LocationListener的代碼下的四個方法進行簡單介紹:

onLocationChanged()這個方法在位置改變時被調(diào)用,onProviderDisabled()這個方法在用戶禁用具有定位功能的硬件時被調(diào)用,onProviderEnabled()這個方法在用戶啟用具有定位功能的硬件時被調(diào)用,onStatusChanged()這個方法在定位功能硬件狀態(tài)改變時被調(diào)用,例如,從不可獲取位置信息狀態(tài)到可以獲取位置信息的狀態(tài),反之亦然 。

(6).為了使GPS定位功能生效,還需要在AndroidManifest.xml文件中加入用戶許可,即加入下面這行代碼,加入用戶權(quán)限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論