Я пытаюсь узнать текущее местоположение пользователя в приложении с архитектурой MVVM. По какой-то причине он возвращает нулевое местоположение. Я пытаюсь получить его в своем репозитории и передать в ViewModel через LiveData.
Вот мой код репозитория:
public MutableLiveData<Location> getCurrentLocation() {
mLocationRequest = LocationRequest.create();
mLocationRequest.setInterval(120000); // two minute interval
mLocationRequest.setFastestInterval(120000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
fusedLocationClient = LocationServices.getFusedLocationProviderClient(mApplication.getApplicationContext());
fusedLocationClient.getLastLocation().addOnSuccessListener(new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null) {
mLocation.setValue(location);
}
}
});
fusedLocationClient.getLastLocation().addOnFailureListener(new OnFailureListener() {
@SuppressLint("LongLogTag")
@Override
public void onFailure(@NonNull Exception e) {
Log.e("GET CURRENT LOCATION ERROR", e.getMessage());
}
});
return mLocation;
}
Мои зависимости
// Google Maps libraries
implementation 'com.google.android.gms:play-services-auth:18.0.0'
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-places:17.0.0'
implementation 'com.google.android.libraries.places:places:2.2.0'
AndroidManifest :
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Что я делаю не так? Спасибо.