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

private LocationManager locationManager;

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

 

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

private LocationListener locationListener;

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

locationManager.removeUpdates(locationListener); 移除listener

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

locationListener = new LocationListener()

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

            位置信息更新
        }

       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 。当然这些操作也是在一个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 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;
     }
    }


};

 

更多相关文章

  1. Android(安卓)SDK下载和更新失败的解决方法!!!
  2. 利用Handler来更新android的UI (2)
  3. 2011.09.26(2)——— android sample之Notepad(getSelectedItemId
  4. AndroidManifest.xml 不同变量的作用(持续更新)
  5. Android短彩信数据库信息整理
  6. Android(安卓)定位当前位置可能出现的问题
  7. Android(安卓)App 增量更新实例(Smart App Updates)
  8. 申请 android google map API key
  9. Android(安卓)SDK下载和更新失败的解决方法

随机推荐

  1. Android基础类之BaseAdapter
  2. android 默认签名 debug签名
  3. Android与H5交互框架实践(下)
  4. 加快Android单模块编译
  5. Android中的进程生命周期
  6. Android利用DownloadManager实现文件下载
  7. Android生命周期中几个重要的函数
  8. Android(安卓)2.3 StageFright如何选定OM
  9. Android(安卓)native应用开发简明教程 (1
  10. 关于android软键盘弹出挤压VIEW和覆盖Vie