Android平台上GPS信号的获取和展示
Android平台上GPS信号的获取和展示
前不久学习GPS,故在Android系统(HTC G7手机)上做了一个GPS信号解析工具,现总结如下,欢迎各位指正
功能:
1. 获取了location的GPS信息,包括经纬度,速度,方向等
2. 卫星信息,包括卫星数,仰角,方位角,信噪比等。
并画了一个地球的形状的图显示卫星信息,由于没有时间,还没有去获取磁场传感器信息
先来了解下GPS的基本概念:
GPS是Global positioning system 的缩写,即全球定位系统,目的是在全球范围内对地面和空中目标进行准确定位和检测
GPS系统一般由地面控制站,导航卫星和接收机三大部分组成
而手机带GPS功能,它首先必须有GPS模块,才能接收GPS信号,GPS模块通过异步串行通信方式与微处理器控制模块进行通信。GPS模块会每隔1秒就向串口发送GPS数据
在android平台上,从窗口获取GPS数据已经被系统做了,为我们提供接口,只需去调用这些接口,就可以获取GPS数据,而不用去读串口;如果在WINCE平台上,要获取GPS数据就得去读取串口,而且WINCE中的串口是独占设备,如果在在程序中打开了串口进行数据的监控,那么打开导航软件之前必须把串口关闭,当然也可以使用虚拟串口的方式,让多个进程能同时获取数据,以下我只要提供了一些主要的模块。
主要用到的类:
LocationManager;
Location;
GpsStatus;
Criteria;
主要的变量定义:
private Location location;
// 定位管理类
private LocationManager locationManager;
//监听卫星变量
private GpsStatus gpsStatus;
Iterable<GpsSatellite> allSatellites;
protected Iterator<GpsSatellite> Iteratorsate;
private Criteria criteria;
1.打开GPS服务,LocationManger是获取位置管理服务,GPS信息和卫星信息都需要它:
- LocationManager locationManager;
- private void openGPSSettings()
- {
- // 获取位置管理服务
- locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
- if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))
- {
- Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT).show();
- return;
- }
- status = false;
- Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();
- Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);
- startActivityForResult(intent,0); //此为设置完成后返回到获取界面
- }
- private void getLocation()
- {
- // 查找到服务信息 位置数据标准类
- Criteria criteria = new Criteria();
- //查询精度:高
- criteria.setAccuracy(Criteria.ACCURACY_FINE);
- // 是否查询海拔:是
- criteria.setAltitudeRequired(true);
- //是否查询方位角:是
- criteria.setBearingRequired(true);
- //是否允许付费
- criteria.setCostAllowed(true);
- // 电量要求:低
- criteria.setPowerRequirement(Criteria.POWER_LOW);
- //是否查询速度:是
- criteria.setSpeedRequired(true);
- provider = locationManager.getBestProvider(criteria, true);
- // 获取GPS信息 获取位置提供者provider中的位置信息
- location = locationManager.getLastKnownLocation(provider);
- // 通过GPS获取位置
- updateToNewLocation(location);
- // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
- //实时获取位置提供者provider中的数据,一旦发生位置变化 立即通知应用程序locationListener
- locationManager.requestLocationUpdates(provider, 1000, 0,locationListener);
- //监听卫星,statusListener为响应函数
- locationManager.addGpsStatusListener(statusListener);
- }
|
【内容导航】 | |
第1页:概念与基本类 | 第2页:响应与信号解��� |
第3页:配置与模拟器设置 |
评论暂时关闭