Użyj LocationManager
.
LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
double longitude = location.getLongitude();
double latitude = location.getLatitude();
Wywołanie getLastKnownLocation()
to nie blokuje - co oznacza, że zostanie zwrócone, null
jeśli żadna pozycja nie jest obecnie dostępna - więc prawdopodobnie powinieneś rzucić okiem na przekazanie metodyLocationListener
do requestLocationUpdates()
metody , co da ci asynchroniczne aktualizacje twojej lokalizacji.
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
longitude = location.getLongitude();
latitude = location.getLatitude();
}
}
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 2000, 10, locationListener);
Musisz ACCESS_FINE_LOCATION
zezwolić aplikacji na korzystanie z GPS.
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Możesz także dodać ACCESS_COARSE_LOCATION
pozwolenie, gdy GPS nie jest dostępny i wybrać dostawcę lokalizacji za pomocą tej getBestProvider()
metody .
Oto klasa,
LocationFinder
aby znaleźć lokalizację GPS. Ta klasa zadzwoniMyLocation
, co załatwi sprawę.LocationFinder
Moja lokacja
źródło
Z
google
rzeczami zmienia się bardzo często: żadna z poprzednich odpowiedzi nie działała dla mnie.na podstawie tego szkolenia google tutaj jest to, jak to robisz za pomocą
wymaga to skonfigurowania usług Google Play
Klasa aktywności
stosowanie
w tobie aktywność
I ta metoda
źródło
możesz uzyskać Current latlng za pomocą tego
`
`
źródło
Powyższe rozwiązania są również poprawne, ale jakiś czas, jeśli lokalizacja jest pusta, to powoduje awarię aplikacji lub nie działa poprawnie. Najlepszym sposobem na uzyskanie szerokości i długości geograficznej Androida jest:
źródło
Najlepszym sposobem jest
Dodaj plik manifestu uprawnień
Następnie możesz uzyskać lokalizację GPS lub jeśli lokalizacja GPS nie jest dostępna, funkcja zwraca lokalizację SIEĆ
źródło
Aktualizacja 2020: Używanie Kotlin Coroutine, aby uzyskać Lat, język i adres urządzenia
To stare pytanie i większość odpowiedzi jest nieaktualna. Oto jak teraz to robię moje aplikacje:
Ta klasa pomaga w śledzeniu lokalizacji urządzenia i zwróceniu listy adresów urządzeń za pomocą geokodowania. Umieść go w klasie użytkowej
Dodaj ciągi do okna dialogowego alertu w przypadku wyłączenia GPS
Dodaj te uprawnienia do manifestu Androida i poproś o nie przy uruchamianiu aplikacji
Stosowanie
Wdrażaj
DeviceLocationListener
w swojejActivity/Fragment
klasieZastąp połączenie
onDeviceLocationChanged
zwrotne. Otrzymasz aktualną lokalizację wonDeviceLocationChanged
Aby rozpocząć śledzenie, utwórz
DeviceLocationTracker
obiektonCreate
metodą swoją. PrzekażActivity
jako Kontekst i to jakoDeviceLocationListener
.To wszystko, teraz zaczniesz otrzymywać aktualizację lokalizacji
onDeviceLocationChanged
.źródło