首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用android获取高度值?

如何使用android获取高度值?
EN

Stack Overflow用户
提问于 2012-09-27 11:46:41
回答 1查看 2.9K关注 0票数 0

我使用了以下代码,我得到的纬度和经度值是正确的,但高度值是0。请帮帮我

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
locationManager = (LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10000,
            0, (LocationListener) this);

public void onLocationChanged(Location location) {
    double lat_chn = (double) (location.getLatitude());
    double lng_chn = (double) (location.getLongitude());
    Log.d("Update Latitude= ", location.getLatitude() + "");
    Log.d("Update Longitude= ", location.getLongitude() + "");
    mapView.getOverlays().add(myLocationOverlay);

    String Text ="Latitude="+location.getAltitude()+
        "\nLongitude ="+location.hasAltitude()+"\nAltitude="+getAltitude(lat_chn,lng_chn);
}
EN

回答 1

Stack Overflow用户

发布于 2012-09-27 11:54:16

你能用sensor manager检查一下吗,因为传感器管理器就是用来做这个的;它有getAltitude(float p0,float p)函数,可以根据大气压力和海平面上的压力计算出以米为单位的高度。

希望能有所帮助。

在代码级别,您可以执行如下所示的操作...

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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);
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12620660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文