Android LocationManager 使用

前一阵子,老大安排我写一个GPS的程序。大体就是用Android 提供的Location 服务,来得到当前的位置信息和卫星信息。这里就用到了LocationManager类,要使用它,先得得到系统所提供的location_serviceide

private LocationManager locationManager;rem

locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);get

 

要实时的获得位置信息,得注册一个location的listener。it

private LocationListener locationListener;io

locationManager.requestLocationUpdates(“gps”, 1000, 0, locationListener); 每秒更新位置信息,不考虑距离变化。event

locationManager.removeUpdates(locationListener); 移除listenerast

在使用这个locationListener以前,还得先new一下,在位置信息更新时要作的操做均可以在这里实现date

locationListener = new LocationListener()List

{
       // implement necessary methods
       public void onLocationChanged(Location location) 
       {
            // TODO Auto-generated method stubservice

            位置信息更新
        }

       public void onProviderDisabled(String provider) 
       {
        // called when the provider be disabled by user


       }

       public void onProviderEnabled(String provider) 
       {
        // called when the provider be enabled
        }

       public void onStatusChanged(String provider, int status, Bundle extras) 
       {
        // TODO Auto-generated method stub

         provider状态改变
        }
      };

 

要获得位置信息,也能够单独调用getLastKnownLocation

Location m_location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

位置信息中包含着 经纬度,高度,速度,UTC时间,定位精度等有用的信息。

 

获得了位置信息,下面来看卫星信息。Android下提供了GpsStatus这个类,经过调用此类的一个method  getSatellites() ,能够获得接收到的卫星的信息列表Iterable<GpsSatellite> 。固然这些操做也是在一个listener当中来作的:GpsStatus.Listener。GpsStatus的listener也是注册于locationManager:
private GpsStatus.Listener statusListener;

locationManager.addGpsStatusListener(statusListener);

locationManager.removeGpsStatusListener(statusListener);

 

初始化并实现更新时相应的操做:

private GpsStatus gpsStatus;

statusListener = new GpsStatus.Listener() 

{
    public void onGpsStatusChanged(int event) 
    {
     // TODO Auto-generated method stub
     gpsStatus= locationManager.getGpsStatus(null);
     
     switch(event)
     {
     case GPS_EVENT_FIRST_FIX:
              //第一次定位时间UTC

              gpsStatus.getTimeToFirstFix();     

      break;
      
     case GPS_EVENT_SATELLITE_STATUS:

             //获得全部收到的卫星的信息,包括 卫星的高度角、方位角、信噪比、和伪随机号(及卫星编号)
      Iterable<GpsSatellite> allSatellites;
      allSatellites = gpsStatus.getSatellites();
     
      break;
      
     case GPS_EVENT_STARTED:
             //Event sent when the GPS system has started.

     break;
      
     case GPS_EVENT_STOPPED:
            //Event sent when the GPS system has stopped. 
      break;
      
     default :
      break;
     }
    }

};

相关文章
相关标签/搜索