我相信我知道解决我的问题的方法,但是我在执行它时遇到了困难。
我正在尝试使用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()
的接口,并让我的Activity实现onLocationChanged()
方法。我希望能够使用回调功能在ViewModel中访问此位置。
我认为这是解决问题的最佳方法,但我正在尝试找出回调方法。
我知道这是一个简单的问题,所以我希望这里有人可以帮助我。
基本上,我想访问onLocationChanged()
中返回的Location并在ViewModel中使用此Location对象。