2016-12-30 72 views
0

我已经为我的Android应用程序设置了Google的融合位置API,并且能够接收位置更新(由于我的更新间隔设置为60000,因此每隔一分钟我就会更新一次gps坐标),当将优先级设置为PRIORITY_HIGH_ACCURACY ,但在使用“PRIORITY_BALANCED_POWER_ACCURACY”时不成功什么时候使用PRIORITY_BALANCED_POWER_ACCURACY的Android FusedLocationApi更新位置

我的问题如下: PRIORITY_BALANCED_POWER_ACCURACY何时/如何实际更新位置? 显然它根本不使用gps,onLocationChanged()在跳到不同的wifi网络/手机信号塔时会被调用吗?

我问,因为我需要一种测试方式,不知道如果一个模拟器可以做到这一点。我有一个物理的android手机,但它只有wifi。

TLDR onLocationChanged()获取使用基于PRIORITY_HIGH_ACCURACY时调用(的setInterval()/ setFastestInterval或setSmallestDisplacement()),但使用PRIORITY_BALANCED_POWER_ACCURACY什么时候onLocationChanged时()被调用?

我非常感谢帮助,谢谢!

回答

3

PRIORITY_BALANCED_POWER_ACCURACY什么时候/如何实际更新 位置?显然,它根本不使用GPS,所以当跳到不同的WiFi 网络/基站时,onLocationChanged()会被调用吗?

答:低功耗的影响。这些应用程序应考虑将PRIORITY_BALANCED_POWER_ACCURACY与更快的setFastestInterval(long)(例如1分钟)和较慢的setInterval(long)(例如60分钟)组合。他们只会在setInterval(long)设置的时间间隔内被分配功率责任,但仍可以接收由其他应用触发的位置,其速率最高可达setFastestInterval(long)。这种请求风格适用于许多位置感知应用程序,包括后台使用情况。如果您在收到更新(如使用网络)后执行了重量级的工作,请注意也可以节流setFastestInterval(long)

但使用 PRIORITY_BALANCED_POWER_ACCURACY时什么时候onLocationChanged()被调用?

答:onLocationChanged()将调用,而在你的setInterval() & setFastestInterval().

编辑位置变化的基础:

类型之间的区别PRIORITY_BALANCED_POWER_ACCURACY & PRIORITY_HIGH_ACCURACY

使用具有优先级不变,如PRIORITY_HIGH_ACCURACY 。没有其他值被接受。

该请求的优先级对位置源使用的LocationClient有很强的暗示。例如,PRIORITY_HIGH_ACCURACY更可能使用GPS,而PRIORITY_BALANCED_POWER_ACCURACY更可能使用WIFI定位,但它也取决于许多其他因素(例如哪些来源可用)并且取决于实施。

我需要一种测试方法,不知道如果一个模拟器可以做到这一点。

答:您可以使用发送伪造的位置模拟器中测试这种情况。

+0

谢谢Chintan的响应! – Sethsmagic

+1

只是为了澄清,你是说一套onLocationChanged()被调用基于纯粹的)的setInterval()setFastestInterval(尽管这setpriority()可我用的? (又名PRIORITY_HIGH_ACCURACY或PRIORITY_BALANCED_POWER_ACCURACY) – Sethsmagic

+0

如果我的上面的评论是真的,那么PRIORITY_HIGH_ACCURACY和PRIORITY_BALANCED_POWER_ACCURACY纯粹是为了准确性,并且与onLocationChanged()被调用的频率无关。那是对的吗? – Sethsmagic