Wysokość otrzymuję zawsze 0. Chcę uzyskać wysokość nad poziomem morza w Androidzie za pomocą GPS.

Mój kod to:

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);
}
3
AndreaF 17 październik 2012, 08:54

2 odpowiedzi

Najlepsza odpowiedź

Czy sprawdziłeś, czy to jest specyficzne dla urządzenia? Pracujesz w emulatorze?

Na początku sprawdziłbym, czy Twoje urządzenie obsługuje wyznaczanie wysokości za pomocą:

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();

Jeśli chcesz wiedzieć, czy lokalizacja ma ustawioną prawidłową wysokość, skorzystaj z następujących wskazówek:

Location location;

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

/* Check if the requested Location has its altitude set */
location.hasAltitude();
5
Nippey 8 sierpień 2013, 15:14

Powinieneś sprawdzić, czy lokalizacja zawiera informacje o wysokości: zanim zadzwonisz location.getAltitude(), po prostu zadzwoń location.hasAltitude(), aby dowiedzieć się, czy zwrócona lokalizacja zawiera tego typu informacje.

W zależności od dostawcy lokalizacji, z którego korzystasz (SIEĆ lub GPS), może nie obsługiwać określania wysokości. Jeśli masz aplikację, która działa z wysokością, spróbuj znaleźć dostawcę lokalizacji, z którego korzysta.

Jeśli chcesz sprawdzić, czy dany dostawca lokalizacji obsługuje wysokość, najpierw wywołaj LocationManager.getProvider(SensorManager.GPS_PROVIDER), aby uzyskać LocationProvider, a następnie wywołaj metodę locationProvider.supportsAltitude().

1
eternay 18 październik 2012, 01:26