【发布时间】:2018-09-13 22:08:31
【问题描述】:
在 Android 中选择 LocationManager 或 FusedLocationClient 非常简单,只需使用 FusedLocationClient,因为它会节省电量,建议将其作为最佳做法。
但是,我必须获取设备的“初始位置”,或者只是获取当前/最后一个已知位置。 FusedLocationClient 在 3 种不同情况下可能会认为是 null 的东西。 (see here)。
在设备的实际位置发生变化之前,这不会改变,当然,在请求位置更新时。 (here)
在android框架提供的LocationManager中,只需调用mLocationManager.getLastKnownLocation(provider);就可以轻松获取最近的已知位置,但用它来监听更新会消耗大量电量。
这里最好的解决方案是什么?两者结合合理吗?如果是,如何使用 LocationManager 只获取当前位置,然后禁用它以节省电量?
【问题讨论】:
-
我将两者结合起来。我使用 getLastKnownLocation 作为第一步,但使用 FusedLocation API 观察到位置更新
-
这是一个已知问题:issuetracker.google.com/issues/36975498#comment125您找到解决方法了吗?
-
@Tiago 我首先检查了 FusedLocation,如果它为空,我使用旧的 LocationManager 来获取当前位置,然后将其与所有可用的提供者进行比较以获得它们中的最佳位置
标签: android google-play-services android-location android-fusedlocation