【Android】【GIS】通过GPS传感器获取海拔

使用条件

  • 打开了位置开关
  • 授予了软件位置权限
  • 有GPS信号,即头顶空旷的地方

室内虽然也能定位,但实际是通过wifi等进行辅助定位的

想要获取海拔,必须通过GPS定位的方式才行,即必须有卫星信号

获取代码


	//启动GPS传感器一次,用于获取海拔
	public static void startLocationSensorOnce(Activity activity, String requestCode) {
	    final long startTime = Times.millisOfNow();
	    LocationManager locationManager = activity.getSystemService(LocationManager.class);
	    locationManager.addNmeaListener(new OnNmeaMessageListener() {
	        @Override
	        public void onNmeaMessage(String message, long timestamp) {
	            //时间过久,停止监听
	            if (timestamp - startTime > 60 * 1000) {
	                locationManager.removeNmeaListener(this);
	                return;
	            }
	            //Context已销毁,停止监听
	            if (activity.isFinishing()) {
	                locationManager.removeNmeaListener(this);
	                return;
	            }
	            //获取成功,停止监听,发布结果
	            if (message.startsWith("$GPGGA") || message.startsWith("$GNGGA")) {
	                String[] tokens = message.split(",");
	                if (tokens.length < 10) return;
	                if (tokens[9].isEmpty()) return;
	                Double altitude = Double.parseDouble(tokens[9]);
	                locationManager.removeNmeaListener(this);
	                EventBus.core.emit("onAltitudeGet", requestCode, altitude);
	            }
	        }
	    });
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值