Android-getLastKnownLocation()返回null-如何通过回调接收位置?

时间:2019-02-13 23:05:56

标签: java android android-service

我相信我知道解决我的问题的方法,但是我在执行它时遇到了困难。

我正在尝试使用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对象。

0 个答案:

没有答案