3

我得到的高度总是 0。我想在 Android 中使用 GPS 获得海拔高度。

我的代码是:

public void onLocationChanged(Location location) {
    double lat = (double) (location.getLatitude());
    double lng = (double) (location.getLongitude());
    double alt = (double) (location.getAltitude());
    latitudine = (int) (lat * 1e6);
    longitudine = (int) (lng * 1e6);
    altitudine = (int) (alt * 1e6);
}
4

2 回答 2

5

您是否检查过这是否是特定于设备的?你在模拟器中工作吗?

我首先会检查您的设备是否支持高度确定:

LocationManager locationManager; LocationProvider locationProvider;

/* Get LocationManager and LocationProvider for GPS */
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
locationProvider = locationManager.getProvider(LocationManager.GPS_PROVIDER);

/* Check if GPS LocationProvider supports altitude */
locationProvider.supportsAltitude();

如果您想知道某个位置是否设置了有效的海拔高度,请使用以下命令:

Location location;

/* Get current location from GPS */
location = Location(LocationManager.GPS_PROVIDER);

/* Check if the requested Location has its altitude set */
location.hasAltitude();
于 2012-10-17T05:24:09.580 回答
1

您应该检查位置是否包含高度信息:在调用之前location.getAltitude(),只需调用location.hasAltitude()以了解返回的位置是否包含此类信息。

根据您使用的位置提供商(网络或 GPS),它可能不支持高度确定。如果您有一个适用于海拔高度的应用程序,请尝试查找它正在使用的位置提供程序。

如果你想检查一个特定的位置提供者是否支持高度,首先调用LocationManager.getProvider(SensorManager.GPS_PROVIDER)获取LocationProvider然后调用方法locationProvider.supportsAltitude()

于 2012-10-17T21:26:28.307 回答