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

更早地获取用户当前位置我已经使用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); } 

这是很容易阅读和非常简单的代码。

但是我注意到,Google最近在Google Play服务中发布了新的客户端API模型,并build议使用FusedLocationProviderApi ,它看起来更复杂,它是asynchronous的,它需要处理callback等。

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

  • 无法解析com.google.android.gms play-services-auth:11.4.0
  • Kivy和Google Play服务
  • 如何在Android中使Geo Fencing警报更加准确
  • 如何在用户从AndroidloginGmail后访问令牌?
  • 用户从Android中的Gmail登录后如何获取访问令牌?
  • 错误“文件google-services.json从模块根文件夹中缺less。 没有它,Google服务插件就无法运行“
  • 在Android中添加地理栏位时出错(状态码为1000)
  • Android - 谷歌login与login屏幕,而不是自动login
  • FusedLocationProvider使用混合硬件来确定基于请求上下文的位置,这意味着它对您来说是透明的。 它还将caching应用程序之间的捕获位置,以避免不必要的工作来确定位置信息。 因此,如果用户有多种位置感知应用程序,则可能会避免征税(等待)位置捕获,因为可能已经caching了位置。

    虽然“地理pipe理器”在足够小的一次性情况下就足够了,但是您应该考虑使用新的替代scheme,因为它的好处可能很大,实施的工作也很简单。

    您可以使用它,因为Google Play服务定期通过各种设备进行更新,并不断改进基于位置的function(以及更多)。

    在启动时链接到FusedLocationProvider的说明: https : //www.youtube.com/watch?v = Bte_GHuxUGc

    在某些情况下FusedLocationProviderperformance糟糕。 例如,如果您想跟踪地图上的path,可能会决定在GPS数据和Wifi数据之间切换。 要计算行驶的精确距离,使用LocationManager强制GPS读数要好得多,特别是如果您还想跟踪哪个wifi没有提供的高度。

    请记住, FusedLocationProvider使用封面上的LocationManager来获取GPS点。 它可能正在执行Wifi扫描,并查找结果以确定位置,而不是使用networking提供程序,但是没有任何有关此知识的文档。

    除非你不能或不想使用FusedLocationProviderFusedLocationProvider我会推荐使用它。