Android中GPS衛星定位的使用


關於Android應用中的GPS衛星定位。

一、應用層實現

1.首先需要在AndroidMainfest.xml中開啟定位權限。

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>  //開啟精確定位權限,誤差一般為三到十米。

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>  //開啟粗略定位權限,誤差一般不超過1.5km。

2.創建LocaionManager(位置管理器、總控制器)對象。

LocationManager mLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

3.創建Location(位置)對象。

Location location = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

/* Location類的常用方法:location.getLongitude(); //獲取經度

                                       location.getLatitude(); //獲取緯度

                                       location.getAltitude(); //獲取海拔

                                       location.getTime(); //獲取時間 */

//AS下該語句報錯,ALT+ENTER出現額外代碼塊,該代碼塊檢查定位權限是否開啟。

4.創建LocationListener對象,監聽位置變化,LocationListener為接口,故需要實現類,本文使用匿名內部類實現。

LocationListener mLocationListener = new LocationListener(){

@Override
public void onLocationChanged(){ //位置變化時該方法自動觸發

//自己定義的方法體

}

@Override
public void onStatusChanged(String provider , int status , Bundle extra){

//provider:我的手機上值是gps,status:GPS狀態,extra:額外信息

/* status(GPS狀態) 一共有三種:1.LocationProvider.AVAILABLE; 服務可獲得

                                                     2.LocationProvider.OUT_OF_SERVICE; 不在服務區

                                                     3.LocationProvider.TEMPORARITY_UNAVAILABLE; 服務未提供

//自己定義方法體

}

@Override
public void onProviderEnabled(String provider){

//當用戶啟用具有定位功能的硬件時調用

//自己定義方法體

}

@Override
public void onProviderDisabled(){

//當用戶禁用具有定位功能的硬件時調用

//自己定義方法體

}
};
5.創建GpsStatus.Listener對象,其中Listener是GpsStatus的一個成員內部類(Listener是一個接口,仍然需要實現類,本文仍然采用匿名內部類)。

//細心的朋友也許會發現前面的mLocationListener也實現了類似的功能,沒錯。

GpsStatus.Listener mListener = new GpsStatus.Listener(){

@Override
public void onGpsStatusChanged(int event){

//event代表GPS的狀態

//自己定義方法體
}
};
mLocationManager.addGpsStatusListener(mListener); //別忘了注冊監聽器

6.創建GpsStatus對象。

GpsStatus mGpsStatus = mLocationManager.getGpsStatus(null);

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


只需要實時定位信息的話只需要完成前四步即可。

細心的朋友可能會發現GpsStatus的功能似乎與LocationListener有點重復,沒錯,GpsStatus最有用的功能(個人見解)其實是開啟查分定位數據監聽,但目前的移動設備具博主

所知大部分都是單點定位,想使用差分定位需要廠商定制,所以只在具體的環境中使用。

mLocationManager.addNmeaListener(new GpsStatus.NmeaListener(){

    @Override

    public void onNmeaReceived(long l , String s){ //接收到Nmea數據時該方法會被調用,l表示數據長度,s表示數據本身

       //自己定義方法體

    }

});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM