终端设备的GPS信息

智能设备中,定位信息是基本的功能,最近的测试中发现GPS信息大海拔高度为0的情况,下面一起总结下项目中定位信息的几种获取形式。

场景一:隔几秒钟把定位数据插入数据库中。

		locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);// 读取GPS状态
		locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER);//判断定位服务是否可用(打开了GPS权限)
		locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, locationListener);
//requestLocationUpdates(String provider, long minTime, float minDistance, LocationListener listener)
Register for location updates using the named provider, and a pending intent.
更新的时间周期,和距离变化周期
 

	private final LocationListener locationListener = new LocationListener() {
		@Override
		public void onLocationChanged(Location location) {
			// 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发
			updateToNewLocation(location);
 		}

		@Override
		public void onProviderDisabled(String provider) {
			// Provider被disable时触发此函数,比如GPS被关闭
			Log.v("gpsinfo", "onProviderDisabled");
			updateToNewLocation(null);
		}

		@Override
		public void onProviderEnabled(String provider) {
			Log.v("gpsinfo", "onProviderEnabled" + provider);
			// Provider被enable时触发此函数,比如GPS被打开
		}

		@Override
		public void onStatusChanged(String provider, int status, Bundle extras) {
			Log.v("gpsinfo", "onStatusChanged");
			// Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数
		}
	};
 


在这个接口回调里就能获取到定位信息了Location相关的

搜星数可以通过另外的接口

			locationManager.addGpsStatusListener(gpsStatusListener); // 注册状态信息回调
private final GpsStatus.Listener gpsStatusListener = new GpsStatus.Listener() {
		@Override
		public void onGpsStatusChanged(int event) { // GPS状态变化时的回调,如卫星数
			GpsStatus status = locationManager.getGpsStatus(null); // 取当前状态
			updateGpsStatus(event, status);
		}
	};
	private void updateGpsStatus(int event, GpsStatus status) {
		if (status == null) {
			setGpsImagStatus(1);
		} else if (event == GpsStatus.GPS_EVENT_SATELLITE_STATUS) {
			int maxSatellites = status.getMaxSatellites();
			Iterator<GpsSatellite> it = status.getSatellites().iterator();
			numSatelliteList.clear();
			int count = 0;
			while (it.hasNext() && count <= maxSatellites) {
				GpsSatellite s = it.next();
				numSatelliteList.add(s);
				count++;
			}
			setGpsImagStatus(getGpsImgStatus(numSatelliteList.size()));
		}
	}


以上是通过Java类获取到的信息。实际上还有原始的GPS数据,
现在android studio不建议使用这些老旧的api了

		locationManager.addNmeaListener(nmeaListener);

static NmeaListener nmeaListener = new NmeaListener() {

		private long timeB = 0;

		@Override
		public void onNmeaReceived(long timestamp, String nmea) {
			gpsAnalysis.processNmeaData(nmea);
			if (timestamp - timeB > 500) {
			} else {
				getGpsAnalysis();
			}
			timeB = timestamp;
		}
	};

GPGSV:可见卫星信息
GPGLL:地理定位信息
GPRMC:推荐最小定位信息
GPVTG:地面速度信息
GPGGA:GPS定位信息
GPGSA:当前卫星信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值