LocationClient
和LocationManager
之间有什么区别。
他们之间的利弊是什么(如电池,准确度)?
哪个更好用?
答案 0 :(得分:33)
Location Manager
是在Android SDK中引入的,可以用作android的功能。
Location Client
是Google Play SDK的一部分,并在最近的Google IO 2013中推出。
可以理解,由于位置客户端是最新的,因此以更高的精度获得最小能量(电池消耗)的位置效率更高。
更新: LocationClient已弃用。您必须使用GoogleApiClient。可以找到它的一个示例here。
Google Play服务团队已清理其代码并将LocationClient功能移至GoogleApiClient。
相同的教程可用于 http://developer.android.com/training/location/retrieve-current.html
在以下链接中,您可以找到关于此主题的IO谈话 http://www.youtube.com/watch?v=Bte_GHuxUGc
答案 1 :(得分:14)
我一直在Android中开发基于位置的应用程序,我认真不建议在任何情况下使用LOCATION CLIENT。理由:
位置更新行为非常不正常,无法按预期工作。即切换网络时位置更新卡住。 (它一直给你一些旧位置)
位置客户端无法修改Android操作系统的Android版本,因为它需要谷歌播放服务。
根据我的经验,位置客户端可能在手机电池方面表现不错,但为您提供及时准确的位置更新效果不佳。
我推荐好老位置管理器,因为我找不到位置客户端可靠。
P.S。 :如果您甚至没有在基于位置的应用程序中获取当前位置,则无需节省电池。
编辑: 如果您知道LocationManager和LocationClient的实现(两者都在文档中提供),您可以创建自己的类似LocationClient的包装器(带回调和填充),它将使用LocationManager但具有自定义可调整属性。
编辑2:
请在此处找到LocationManager Wrapper类,它提供及时的位置更新:
答案 2 :(得分:3)
我参与了一个跟踪应用程序,我的经验是LocationManager比LocationClient更好。 LocationClient不提供任何方式来指定您仅希望从GPS进行位置更新。它允许的只是指定"高精度"。这在大多数情况下都适用,但是每隔一段时间你就会获得一个位置更新,这个位置更新数百米,但指定精度为几米。没有办法知道你有一个无法使用的样本。使用LocationManager,如果您指定GPS_PROVIDER,您可以放心,您永远不会得到非常不准确的样本。为我们工作得很好。
答案 3 :(得分:2)
来自之前转换到Google Play服务的人,我可以给你一些经验:
我有一个大约2.5岁的应用程序,它广泛使用位置服务。当然,从一开始我们就使用了LocationManager,因为Android平台上提供了这些功能。
与IOS相比,Android上的位置服务体验非常糟糕。它比我们的IOS应用程序有缺陷,不可靠,并且提供的位置不太精确,而且它耗尽了更多的电量。这是拖累。
因此,当谷歌在今年夏天推出新的API时,我们跳了起来。这样更好。有几件事:
更快更可靠。
它不那么多了。例如,在旧的API中,我们有时会得到一个旧的"修复新的时间戳。这种情况再也不会发生了。还有更多,但这将是一个更长的帖子。
绝对耗尽电量。例如,当您打开地图视图时,GPS会一直运行,并且GPS图标可见。新的情况并非如此。这让用户想知道发生了什么。这不再是一个大问题。
因此,当涉及到位置输出和工作时,一切都会更好。但是有一些缺点:
您必须安装Google Play服务,这意味着它不适用于任何非谷歌批准的"手机型号,在某些情况下,您必须告诉用户需要安装它。
API本身是更复杂的IMO,部分原因在于第1点。除了"常规"回调即等待位置修复等。您现在有一个流程可以在您开始之前参与,您必须检查播放服务是否可用,以及" connect" locationclient。这是额外的代码,有点复杂。在代码中也要考虑更多错误的条件(如果你感到困扰......)
Google Play服务本身至少需要2.2,因此它不适用于旧设备。我们不得不告诉一些客户他们必须升级......
希望这有帮助。