Мне кажется, что я знаю решение своей проблемы, но у меня возникают проблемы с его реализацией.
Я пытаюсь получить местоположение моего устройства с помощью getLastKnownLocation()
, но это не обязательно сработает, когда-установка Android APK.getLastLocation()
кэширует местоположения и полагается на другие службы, получающие местоположение.
Моя реализация теперь работает, но не при чистой установке APK.Реализация здесь:
private Location getLastKnownLocation() {
LocationManager locationManager = (LocationManager)getApplicationContext().getSystemService(LOCATION_SERVICE);
List<String> providers = locationManager.getProviders(true);
Location currentLocation = null;
for (String provider : providers) {
Location location = locationManager.getLastKnownLocation(provider);
if (location == null) {
continue;
}
if (currentLocation == null || location.getAccuracy() < currentLocation.getAccuracy()) {
// Found best last known location: %s", l);
currentLocation = location;
}
}
return currentLocation;
}
Моя идея состоит в том, чтобы сделать это:
Я хочу использовать интерфейс, который implements
LocationListener
и использует onLocationChanged()
, и моя активностьреализовать метод onLocationChanged()
.Я хочу использовать Callback для доступа к этому местоположению в моей ViewModel.
Я думаю, что это лучший подход к моей проблеме, но я пытаюсь выяснить методы Callback.
IЯ знаю, что это простая проблема, поэтому я надеялся, что кто-то здесь сможет мне помочь.
По сути, я хочу получить доступ к Location, возвращенному в onLocationChanged()
, и использовать этот объект Location в моей ViewModel.