GoogleApiClient与LocationClient一起获取Android中的准确位置

时间:2014-12-06 08:09:14

标签: android location google-play-services

我正在尝试为我的紧急警报应用找到准确的位置。我已经使用locationManager获取位置,但使用此技术获取位置需要大约30秒我正在寻找更快的&准确的方式。

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

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

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

让我知道!

谢谢!

4 个答案:

答案 0 :(得分:2)

如果您需要融合高精度位置,GoogleApiClient位置客户端就会很好。

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

使用位置客户端,您必须选择提供商。你甚至可以使用一个标准,但在这种情况下,我认为这些信息不是融合的#34;。在您的情况下,我认为最好的选择是使用GoogleApiClient位置客户端,您可以使用getLastLocation()

答案 1 :(得分:1)

我建议使用GooglePlayServices,不仅仅是因为@ gresywolf82的原因,还因为它是获取位置数据最稳定的方式。 根据我的经验,我遇到一些Android设备可能在从SDK的locationManager获取位置时遇到问题,这是由于SDK中可能存在的错误,您可以在Android开源项目中检查问题 - 问题跟踪器有关此问题locationManager here

的问题

我在使用locationManager时自己发现了上一个问题,在切换到Google Play Services API时完全没有问题。

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

答案 2 :(得分:1)

LocationClient和GoogleApiClient都提供融合位置。 您需要指定自己的提供商的LocationManager,如果您想要自己提供,这是一个低级访问。

据我所知,GoogleApiClient是LocationClient和其他GoogleApis的集合(如果我弄错的话,有人请更正)。如果您只希望定位LocationClient,则可以在没有任何活动合规性的情况下这样做。

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

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

答案 3 :(得分:0)

请勿使用GoogleApiClient。它老了,有问题。使用新API。请阅读以下Android新闻通讯链接了解详情: https://android-developers.googleblog.com/2017/06/reduce-friction-with-new-location-apis.html