Android:除了 Location.getAltitude() 之外,还有其他方法可以获取高度吗? (我听说过使用传感器)

Posted

技术标签:

【中文标题】Android:除了 Location.getAltitude() 之外,还有其他方法可以获取高度吗? (我听说过使用传感器)【英文标题】:Android: Is there a way to obtain altitude aside from Location.getAltitude()? (I've heard using Sensor) 【发布时间】:2011-11-16 15:04:52 【问题描述】:

除了 Location.getAltitude() 之外,还有其他方法可以获取高度吗? 我听说过使用 Sensor,但不知道在网上找不到。

更新1 我发现SensorManager.getAltitude(float, float) 使用 API 级别 9 以上,但不知道如何实现它。你能和我们分享一下吗?

【问题讨论】:

【参考方案1】:

我知道已经很晚了,但是对于正在寻找它的人来说,这可能会有所帮助

import android.app.Activity;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;

public class MyActivity extends Activity implements SensorEventListener 

    private SensorManager sensorManager;
    private Sensor sensor;
    private float altitude = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);

        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PRESSURE);
    

    @Override
    protected void onResume() 
        super.onResume();

        if (sensor != null) 
            sensorManager.registerListener(this, sensor, SensorManager.SENSOR_DELAY_NORMAL);
    

    @Override
    protected void onPause() 
        super.onPause();
        sensorManager.unregisterListener(this);
    

    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) 

    @Override
    public void onSensorChanged(SensorEvent event) 
        float presure = event.values[0];
        altitude = SensorManager.getAltitude(SensorManager.PRESSURE_STANDARD_ATMOSPHERE, presure);

        System.out.println("altitude => " + altitude);
    

【讨论】:

这完全可行,但我仍然不确定为什么 Location.getAltitude() 总是返回 0...?

以上是关于Android:除了 Location.getAltitude() 之外,还有其他方法可以获取高度吗? (我听说过使用传感器)的主要内容,如果未能解决你的问题,请参考以下文章

我的应用程序运行良好,除了Android 9版本。我无法理解什么是问题

Android:除了 Location.getAltitude() 之外,还有其他方法可以获取高度吗? (我听说过使用传感器)

除了 Android API 之外,还有其他用于计算地理围栏违规的 API

为啥除了 Pixel XL 设备在 android studio 模拟器中所有 ADV 设备都不能工作?

android自动更新除了友盟还有别的吗

除了 IMEI、Android_ID、WLAN Mac 和蓝牙地址之外的设备的完美唯一 ID