android 海拔高度_Android:如何获取准确的海拔高度?

另一种方法是解析NMEA字符串。在$ GPGGA句话已经包含海拔修正高度数据。

因此,只需为LocationManager创建NMEA字符串的侦听器并解析消息:

private GpsStatus.NmeaListener mNmeaListener = new GpsStatus.NmeaListener() {

@Override

public void onNmeaReceived(long timestamp, String nmea) {

parseNmeaString(nmea);

}

};

public void registerLocationManager(Context context) {

mLocationManager = (LocationManager) mContext.getSystemService(LOCATION_SERVICE);

mLocationManager.addNmeaListener(mNmeaListener);

}

private void parseNmeaString(String line) {

if (line.startsWith("$")) {

String[] tokens = line.split(",");

String type = tokens[0];

// Parse altitude above sea level, Detailed description of NMEA string here http://aprs.gids.nl/nmea/#gga

if (type.startsWith("$GPGGA")) {

if (!tokens[9].isEmpty()) {

mLastMslAltitude = Double.parseDouble(tokens[9]);

}

}

}

}

您可以替换通过位置侦听器收到的最后一个位置对象的高度,也可以通过NMEA解析整个新位置。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android设备可以使用内置的传感器来获取海拔高度,其中包括气压传感器和GPS传感器。 使用气压传感器获取海拔高度: 1. 在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 2. 在代码中获取LocationManager对象并注册LocationListener监听器: ``` LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { float altitude = location.getAltitude(); // 处理获取到的海拔高度数据 } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); ``` 3. 在LocationListener的onLocationChanged方法中,可以通过Location对象的getAltitude方法获取到当前位置的海拔高度。 使用GPS传感器获取海拔高度: 1. 在AndroidManifest.xml文件中添加以下权限: ``` <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> ``` 2. 在代码中获取LocationManager对象并注册LocationListener监听器: ``` LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { double altitude = location.getAltitude(); // 处理获取到的海拔高度数据 } public void onStatusChanged(String provider, int status, Bundle extras) {} public void onProviderEnabled(String provider) {} public void onProviderDisabled(String provider) {} }; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener); ``` 3. 在LocationListener的onLocationChanged方法中,可以通过Location对象的getAltitude方法获取到当前位置的海拔高度。 需要注意的是,使用气压传感器获取海拔高度会受到气压的影响,而使用GPS传感器获取海拔高度则相对准确一些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值