【问题标题】:Android Fused Location Won't Deliver Periodic UpdatesAndroid Fused Location 不会提供定期更新
【发布时间】:2017-02-17 08:27:10
【问题描述】:

我想每隔几分钟进行一次硬定位,每隔几分钟进行一次软定位,如果用户移动的距离超过了一定的米数。我一直在使用以下代码步行测试逻辑(在驾驶时也尝试使用更大的参数),但它并没有真正返回我定期的位置修复。它会在请求开始时立即返回位置修复,然后有时会在几分钟后返回 1 个位置修复,但随后最多一个小时它不会返回位置修复。

LocationRequest locationRequest = LocationRequest.create();
int priority = PRIORITY_BALANCED_POWER_ACCURACY;
locationRequest.setPriority(priority);
locationRequest.setInterval(localInterval); //set to 6 minutes
locationRequest.setFastestInterval(localFastestInterval); //set to 3 minutes
locationRequest.setSmallestDisplacement(smallestDisplacement); //set to 10 meters
locationRequest.setNumUpdates(numUpdates);  //set to Int.MAX_VALUE
locationRequest.setExpirationDuration(expirationDuration); // set to Long.MAX_VALUE
LocationServices.FusedLocationApi.requestLocationUpdates(locationClient, locationRequest, pendingIntent);

如果我将位移设置为 0,那么我会定期更新位置。知道发生了什么吗?

【问题讨论】:

  • 'numUpdates'的值是多少。
  • @SachinS 查看同一行的评论

标签: android location android-location fusedlocationproviderapi android-fusedlocation


【解决方案1】:

经过长期详尽的测试和实验,我发现如果您不调用setFastestInterval,您将完全按照setInterval 设置的间隔定期更新。

但是,由于其他应用程序可能会导致向您提供定位修复的速度非常快,因此只需检查是否忽略了超过特定时间阈值交付的定位修复。

根据文档:如果 setFastestInterval(long) 设置得比 setInterval(long) 慢,那么你的有效最快间隔是 setInterval(long) 但这不会发生:例如设置以下参数应该每 1 分钟为您提供一次硬定位,但它不会(至少在 Marshmallow 上):

interval = 1 min
fastestInterval = 20 min
displacement = 0

如果有人可以用一段代码来反驳我的发现,那就太好了。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 2021-05-03
  • 2021-05-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多