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信息和卫星信息都需要它:

  1. LocationManager locationManager;  
  2. private void openGPSSettings()  
  3.     {         
  4.         // 获取位置管理服务     
  5.         locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);          
  6.         if (locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))   
  7.         {           
  8.             Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT).show();      
  9.             return;        
  10.         }      
  11.         status = false;  
  12.         Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show();       
  13.         Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS);       
  14.         startActivityForResult(intent,0); //此为设置完成后返回到获取界面  
  15.     }  
2.填充Criteria位置数据标准类,并调用位置监听函数和卫星监听函数,将所要操作的设置在Criteria数据标准类中设置,为true时可以使用
  1. private void getLocation()      
  2.     {      
  3.         // 查找到服务信息    位置数据标准类  
  4.         Criteria criteria = new Criteria();      
  5.         //查询精度:高  
  6.         criteria.setAccuracy(Criteria.ACCURACY_FINE);   
  7.         // 是否查询海拔:是  
  8.         criteria.setAltitudeRequired(true);  
  9.         //是否查询方位角:是  
  10.         criteria.setBearingRequired(true);  
  11.         //是否允许付费  
  12.         criteria.setCostAllowed(true);      
  13.         // 电量要求:低  
  14.         criteria.setPowerRequirement(Criteria.POWER_LOW);  
  15.         //是否查询速度:是  
  16.         criteria.setSpeedRequired(true);  
  17.           
  18.         provider = locationManager.getBestProvider(criteria, true);  
  19.           
  20.         // 获取GPS信息   获取位置提供者provider中的位置信息  
  21.         location = locationManager.getLastKnownLocation(provider);   
  22.         // 通过GPS获取位置       
  23.         updateToNewLocation(location);     
  24.         // 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米      
  25.         //实时获取位置提供者provider中的数据,一旦发生位置变化 立即通知应用程序locationListener  
  26.         locationManager.requestLocationUpdates(provider, 1000, 0,locationListener);  
  27.         //监听卫星,statusListener为响应函数  
  28.         locationManager.addGpsStatusListener(statusListener);  
  29.         }  
  • 1
  • 2
  • 3
  • 下一页
【内容导航】
第1页:概念与基本类 第2页:响应与信号解���
第3页:配置与模拟器设置

相关内容