GoogleApiClient vs LocationClient 在 Android 中获取准确的位置



我正在尝试为我的紧急警报应用程序获取准确的位置。我已经在使用位置管理器来获取位置,但使用此技术获取位置大约需要 30 秒,我正在寻找更快、更准确的方法。

这里的主要目标是获得更快/准确的位置(室内或室外(。

我决定为此目的使用GooglePlayservices API。我想出有两个选项LocationClient和GoogleApiClient?

我不确定这里最好的是什么?有人可以告诉我两者有什么区别,或者有更好的选择吗?

让我知道!

谢谢!

如果您需要融合的高精度定位,GoogleApiClient 位置客户端非常有用。

我所说的融合是指使用Wifi,GPS等计算的位置。

相反,对于位置客户端,您必须选择一个提供程序。您甚至可以使用标准,但在这种情况下,我认为信息没有"融合"。在您的情况下,我认为最好的选择是使用 GoogleApiClient 位置客户端,您可以使用 getLastLocation() .

我建议使用GooglePlayServices,这不仅是因为@gresywolf82已经说明的原因,还因为它是获取位置数据的最稳定方式。根据我的经验,我遇到过某些Android设备可能无法从SDK的位置管理器获取位置,这是由于SDK中可能存在的错误,您可以在Android开源项目中检查有关此问题的问题 位置管理器 这里

我在使用位置管理器时自己发现了以前的问题,并且在切换到Google Play服务API时绝对没有问题。

总而言之,不仅为了提高精度,而且为了在各种设备中提高稳定性,我绝对建议使用Google Play服务API。

LocationClient 和 GoogleApiClient 都提供融合的位置。它是位置管理器,您需要在其中指定自己的提供程序,如果您想推出自己的提供程序,这是一个低级别的访问权限。

据我所知,GoogleApiClient是LocationClient和其他GoogleAPI的集合(如果我弄错了,请有人纠正(。如果您只想定位位置客户,则可以在没有任何活动合规性的情况下这样做。

另一方面,GoogleApiClient似乎需要与活动生命周期紧密耦合,需要在Stop上断开连接并在Start上连接。我在这种异步调用中遇到的麻烦是试图确保 API 在我需要的时候已经启动并准备就绪。因此,我通常使用LocationClient,并使其在活动生命周期之外运行。

这有效,但如果您有功耗问题,则可能需要在应用程序处于后台时断开连接,并在应用程序进入前台时重新连接。

不要使用 GoogleApiClient。它很古老,而且有问题。使用新的 API。请阅读以下安卓通讯链接了解详情:https://android-developers.googleblog.com/2017/06/reduce-friction-with-new-location-apis.html

最新更新