【发布时间】:2012-06-15 16:04:46
【问题描述】:
有人知道为什么我下面的 getAltitude 总是返回 0 吗?
package com.example.helloandroid;
import android.app.Activity;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.util.Log;
public class HelloAndroid extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
Log.d("main", "onCreate");
setupGps();
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
LocationListener locationListener;
LocationManager lm;
void setupGps() {
Log.d("gps", "Setting up GPS...");
locationListener = new MyLocationListener();
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 20000, 5,
locationListener);
Log.d("gps",
"GPS supports altitude: "
+ lm.getProvider(LocationManager.GPS_PROVIDER)
.supportsAltitude());
Log.d("gps", "Finished setting up GPS.");
}
static class MyLocationListener implements LocationListener {
public void onLocationChanged(Location location) {
Log.d("gps", "onLocationChanged");
Log.d("gps",
"x: " + location.getLongitude() + ", y: "
+ location.getLatitude() + ", alt.: "
+ location.getAltitude());
}
public void onProviderDisabled(String provider) {
Log.d("gps", "onProviderDisabled");
}
public void onProviderEnabled(String provider) {
Log.d("gps", "onProviderEnabled");
}
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("gps",
"onStatusChanged; new status: " + String.valueOf(status));
}
}
}
为了测试,我向模拟器发出带有高度的geo 命令:
[someone@somewhere ~]$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: type 'help' for a list of commands
OK
geo fix -121.45356 46.51119 4392
OK
但是getAltitude() 返回 0:
我只尝试过模拟设备。
编辑
根据checheen 的评论,我确认Location.hasAltitude() 是真的。它是。还有什么想法吗?
public void onLocationChanged(Location location) {
Log.d("gps", "onLocationChanged");
Log.d("gps", "x: " + location.getLongitude()
+ ", y: " + location.getLatitude());
Log.d("gps", "hasAltitude: " + location.hasAltitude()
+ ", alt.: " + location.getAltitude());
}
【问题讨论】:
-
According to the doc,如果
Location.hasAltitude()返回 false,就会发生这种情况,当Location根本没有高度信息时会发生这种情况。也许这适用于你? -
我正在检查您评论的第一部分 (
.hasAltitude() == false);至于您评论的第二部分,我在geo命令中提供了高度。 -
@cheeken:
hasAltitude()似乎返回 true。 -
你在海滩还是什么地方?
-
在某个结冰的湖边的沙滩上耶