Does anyone know why my getAltitude in the next always returns 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)); } } }
To check, I issue a geo command with emulator height:
[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
But getAltitude() returns 0:

I just tried with emulated devices.
Edit
Following the comments, I confirmed that Location.hasAltitude() true. It. Any other idea?
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()); }

android gps
user610650
source share