【问题标题】:Fused location provider behavior in Android 5.0 unexpectedAndroid 5.0 中的融合位置提供程序行为出乎意料
【发布时间】:2015-11-01 13:37:44
【问题描述】:

我正在尝试使用 android 融合位置提供程序,使用 PRIORITY_HIGH_ACCURACY 每 30 分钟获取一次设备位置。让我惊讶的是,

当 GPS 被禁用时,我希望 API 能够利用网络提供商和传感器为我提供准确度不高的位置。但是,在这种情况下,API 返回的位置 对于 Android 5.0 为空。

这种行为在 Android 4.0 中有所不同,它为我提供了准确度不高的位置,正如预期的那样。我找不到任何关于此的文档!有什么想法吗??

编辑: 刚刚意识到,Android 5.0 的设备没有 SIM 卡,这是否意味着如果没有 SIM 卡,融合位置提供商也不会考虑 WiFi 来寻找最佳位置?

【问题讨论】:

标签: android location fusedlocationproviderapi android-fusedlocation


【解决方案1】:

在设备位置关闭后缓存将被清除,因此您应该将 LocationRequest 与 PRIORITY_HIGH_ACCURACY 一起使用。您可以使用 LocationCallBack 作为弱引用,这样您就可以避免内存泄漏。您必须在 onStop() 中删除位置更新。这样的代码,

            LocationRequest locationRequest = LocationRequest.create();
            locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
            locationRequest.setInterval(2000);
            LocationCallback locationCallback = new LocationCallback() {
                @Override
                public void onLocationResult(LocationResult locationResult) {
                    super.onLocationResult(locationResult);
                    if (locationResult == null || locationResult.getLastLocation() == null)
                        return;
                    updateLocation(locationResult.getLastLocation());
                }
            };

            fusedLocationProviderClient.requestLocationUpdates(locationRequest, locationCallback, null);

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2013-09-01
    • 2013-08-02
    • 2017-07-01
    • 1970-01-01
    • 2015-03-02
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    相关资源
    最近更新 更多