我想得到一个硬位置修复每一特定分钟&一个软位置修复每隔一分钟,如果用户移动了更多,然后特定的仪表。我一直在用下面的代码遍历来测试逻辑(在驾驶时也尝试使用更大的参数),但它实际上并没有返回定期的位置修复。它将在请求启动时立即返回一个位置修复,然后在几分钟后返回一个位置修复,但直到一个小时,它将不会返回一个位置修复。
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,则会得到周期性的位置更新。知道怎么回事吗?
发布于 2016-10-14 20:04:49
经过长时间的详尽测试和实验,我发现如果不调用setFastestInterval,您将完全按照setInterval设置的时间间隔进行定期更新。
但是,由于其他应用程序可以使位置修复非常快地交付给您,所以只需检查是否忽略了所传递的位置补丁,其速度快于所通过的某个阈值。
根据文档:如果setFastestInterval(long)设置的速度比setInterval(long)__慢,那么有效的最快间隔是setInterval(长),但这不会发生:例如,设置以下参数可以使您每1分钟修复一次硬位置,但它没有(至少在Marshmallow上):
interval = 1 min
fastestInterval = 20 min
displacement = 0如果有人能用一段代码来证明我的发现,那就太好了。
https://stackoverflow.com/questions/39932475
复制相似问题