前一阵子,老大安排我写一个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<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;
}
}


};

更多相关文章

  1. ContentProvider实现数据共享1
  2. Android(安卓)POI操作office文档
  3. Android(安卓)WebView useragent
  4. Android(安卓)LayerBuffer
  5. facebook继续关注android移动阵营,悄然发布‘Facebook页面信使’
  6. Android(安卓)UI学习 Linear Layout, RelativeLayout
  7. android,利用layoutParams代码动态布局空间位置
  8. Android(安卓)的网络编程(4)-HttpClient接口
  9. android中子线程更新UI的方式浅析

随机推荐

  1. Android的滑动手势处理
  2. Android开发——工欲善其事必先利其器
  3. android应用程序fps meter[帧数显示]的分
  4. ISurfaceComposer接口有13个成员函数
  5. Android 日志系统logcat内核代码分析
  6. ubuntu环境:下载、编译模拟器平台android
  7. Android(2017-2018)BAT面试题整理(java篇,
  8. Android机顶盒 adb命令模拟遥控器操作
  9. Android 常用ADB命令汇总!!! -- 持续补充
  10. Android中 备份短信 还原短信