gpt4 book ai didi

android - 需要同步 onLocationChanged

转载 作者:行者123 更新时间:2023-11-29 21:53:46 29 4
gpt4 key购买 nike

我正在创建一个应用程序,它通过网络广播用户的位置,为此我创建了一个服务,我在其中使用 LocationListener 并从中获取更新onLocationChanged

我已经设置了requestLocationUpdates如下

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
15000,
0,
geoHandler);

每当我在 onLocationChanged 中获得更新时,我都会通过网络广播位置。

现在的问题是 onLocationChanged 被过于频繁地触发,即使它没有超过时间限制(这是完全不可预测的),这反过来又触发了我的自定义函数过于频繁地广播位置信息。

所以我不知道如何以适当及时的方式同步这个过程,比如每隔 15 秒位置就会通过网络广播,而不是过于频繁地启动它

最佳答案

onLocationChanged 被调用的频率如何?

这是一种奇怪的行为,因为当您将 minTime!=0 参数添加到 :

locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, minTime, minDistance, geoHandler)

然后仅在 minTime 后才通知监听器。

经过更深入的研究,我发现 minTime 是相对的。这取决于许多因素,因此您的 onLocationChanged 不会在 minTime 之后准确调用。 Google 建议使用此参数来提高功率和电池效率。所以你应该使用更大的值,比如 1000*60*5(5 分钟。)

如果您确实需要每 15 秒广播一次您的位置,请记住 GPS 精确定位无法立即触发,至少需要 5-10 秒(最佳情况)。因此,您必须将设计更改为如下所示:

  • locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
    0, 0, geoHandler)
  • onLocationChanged 中检查您最后一次发送/处理您的位置是什么时候,如果耗时 >= 15 秒,则广播它;

希望对你有帮助。

关于android - 需要同步 onLocationChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13746250/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com