Android FusedLocationApi 何时使用 PRIORITY_BALANCED_POWER_ACCURACY 更新位置
Posted
技术标签:
【中文标题】Android FusedLocationApi 何时使用 PRIORITY_BALANCED_POWER_ACCURACY 更新位置【英文标题】:When does the Android FusedLocationApi update location using PRIORITY_BALANCED_POWER_ACCURACY 【发布时间】:2017-05-14 10:02:32 【问题描述】:我已经为我的 android 应用设置了 Google 的 Fused Location API,并且在将优先级设置为 PRIORITY_HIGH_ACCURACY 时能够接收位置更新(gps 坐标每分钟,因为我的更新间隔设置为 60000),但在使用“PRIORITY_BALANCED_POWER_ACCURACY”时未成功"
我的问题如下: PRIORITY_BALANCED_POWER_ACCURACY 何时/如何实际提供更新的位置? 显然它根本没有使用 gps,所以当跳到不同的 wifi 网络/蜂窝塔时会调用 onLocationChanged() 吗?
我问是因为我需要一种测试方法,但不确定模拟器是否可以做到这一点。我有一部实体安卓手机,但只有wifi。
TLDR onLocationChanged() 在使用基于 (setInterval()/setFastestInterval 或 setSmallestDisplacement()) 的 PRIORITY_HIGH_ACCURACY 时被调用,但在使用 PRIORITY_BALANCED_POWER_ACCURACY 时何时调用 onLocationChanged()?
非常感谢您的帮助,谢谢!
【问题讨论】:
【参考方案1】:
PRIORITY_BALANCED_POWER_ACCURACY
何时/如何实际更新 地点?显然,它根本没有使用 GPS,所以也是 onLocationChanged() 在跳到不同的 wifi 时被调用 网络/手机信号塔?
答案:低功耗影响。这些应用程序应考虑将PRIORITY_BALANCED_POWER_ACCURACY 与更快的setFastestInterval(long)
(例如1 分钟)和更慢的setInterval(long)
(例如60 分钟)结合使用。它们只会在setInterval(long)
设置的时间间隔内被分配电源责任,但仍可以以高达setFastestInterval(long)
的速率接收其他应用程序触发的位置。这种类型的请求适用于许多位置感知应用程序,包括后台使用。如果您在收到更新后执行繁重的工作(例如使用网络),请注意同时限制 setFastestInterval(long)
。
但是
onLocationChanged()
在使用时什么时候被调用PRIORITY_BALANCED_POWER_ACCURACY
?
答案:onLocationChanged()
将根据您的setInterval() & setFastestInterval().
更改位置时调用
编辑:
PRIORITY_BALANCED_POWER_ACCURACY 和 PRIORITY_HIGH_ACCURACY 类型之间的区别
与优先级常量一起使用,例如 PRIORITY_HIGH_ACCURACY。不接受其他值。
请求的优先级是对 LocationClient 使用哪个位置源的强烈提示。例如,PRIORITY_HIGH_ACCURACY 更有可能使用 GPS,而 PRIORITY_BALANCED_POWER_ACCURACY 更有可能使用 WIFI 和基站定位,但它也取决于许多其他因素(例如可用的来源)并且取决于实现。
我需要一种测试方法,但不确定模拟器是否可以做到这一点。
回答:您可以使用发送假位置在模拟器中测试此场景。
【讨论】:
感谢 Chintan 的回复! 澄清一下,您是说 set onLocationChanged() 应该完全基于 setInterval() 和 setFastestInterval() 调用,尽管我使用了哪个 setPriority()? (又名 PRIORITY_HIGH_ACCURACY 或 PRIORITY_BALANCED_POWER_ACCURACY) 如果我上面的评论是真的,那么 PRIORITY_HIGH_ACCURACY 和 PRIORITY_BALANCED_POWER_ACCURACY 纯粹是为了准确度,与调用 onLocationChanged() 的频率无关。对吗?以上是关于Android FusedLocationApi 何时使用 PRIORITY_BALANCED_POWER_ACCURACY 更新位置的主要内容,如果未能解决你的问题,请参考以下文章
FusedLocationApi.getLastLocation 总是返回 null(android 6.0,api 23)
在 Android 后台服务中使用 LocationServices.FusedLocationApi.requestLocationUpdates...onLocationChanged 从未调用
可以使用 Android 的 FusedLocationApi 获取新数据(确切的当前位置)吗?
为了在 Android 中获得更准确的位置结果,使用 FusedLocationApi 和 FusedLocationProviderClient 哪个?