在LocationManager上使用FusedLocationProviderApi有什么好处吗?

时间:2015-05-09 20:07:08

标签: android google-play-services android-location android-maps-utils

为了获得用户当前位置,我之前使用过LocationManager:

LocationManager locationManager = (LocationManager) getActivity().getSystemService(Context.LOCATION_SERVICE);

if (locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

} else if (locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
    location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
}

易于阅读且代码非常简单。

但我注意到谷歌最近发布了New Client API Model in Google Play Services并建议使用FusedLocationProviderApi看起来更复杂,它是异步的,它需要处理回调等。

在LocationManager上使用FusedLocationProviderApi有什么好处吗?

3 个答案:

答案 0 :(得分:15)

FusedLocationProvider使用混合硬件根据请求的上下文确定位置,这意味着它对您透明地进行了优化。它还将缓存应用程序之间捕获的位置,以避免不必要的工作来确定位置信息。因此,如果用户拥有各种位置感知应用程序,他们可能会避免对设备征税(并等待)进行位置捕获,因为可能已经缓存了这些应用程序。

虽然ol'LocationManager足以满足小型,一次性的需求,但你应该考虑更新的替代方案,因为它的好处可能很大,而且实施的工作也很简单。

您也可以使用它,因为Google Play服务会定期在各种设备上进行更新,并且不断对基于位置的功能进行改进(以及更多)。

启动时对FusedLocationProvider的解释的链接:https://www.youtube.com/watch?v=Bte_GHuxUGc

答案 1 :(得分:2)

在某些情况下,FusedLocationProvider执行可怕。例如,如果要在地图上跟踪路径,可能会决定在GPS数据和Wifi数据之间切换。要计算准确的行进距离,最好使用LocationManager强制GPS读数,特别是如果您还想跟踪wifi无法提供的高度。

答案 2 :(得分:0)

请注意FusedLocationProvider使用LocationManager至少获得GPS积分。它可能正在执行Wifi扫描并查看结果以确定位置,而不是使用网络提供商,但我没有任何关于此的文档。

除非您不能或不想使用FusedLocationProvider,否则我建议您使用它。