我在android中使用Fused Location Provider库。它工作得非常好。但我有一个问题,它返回最少5秒的位置更新。
我尝试过所有的事情,例如将最短更新时间设置为1毫秒,距离设置为0.01米,优先级设置为PRIORITY_HIGH_ACCURACY
我的代码:
locationrequest.setInterval(1); // 1 milliseconds
locationrequest.setSmallestDisplacement(0.01f); // 0.01 meters
locationrequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
但没有用,两次连续位置更新之间的最短时间 5秒。
我的问题是:有没有办法将位置更新时间减少到 5毫秒?
- >我需要 10分钟的位置更新,因此高耗电量没有问题。
- >我需要任何方式(可能):是否有可用的外部硬件,通过蓝牙连接并发送位置更新达到该级别?
编辑:
让我问你一个不同的问题: 位置更新的最短时间是什么以及如何实现?
假设我想追踪一辆以400公里/小时的速度行驶的汽车,意味着 5米,大约<50英寸。那么你能建议更好的方法来跟踪这辆车吗?
答案 0 :(得分:6)
位置感应硬件(GPS,AGPS等)的精确度和准确性意味着每隔几秒钟更频繁地获取更新不太可能提供有意义的结果。实际上,像融合位置提供商这样的技术可能会优先获得更多准确的结果,而不是每隔几百毫秒提供一次结果。
除此之外,每秒多次更新电池消耗可能非常显着。
所有这一切。获取位置感应硬件正在接收的每个更新的方法是将位置更新间隔和最小位移设置为零,并优先考虑准确性。
locationrequest.setInterval(0); // No delay.
// locationrequest.setSmallestDisplacement(0); // This is the default.
locationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
请注意,这将为您提供每次更新,但根据硬件限制以及可能的融合位置提供程序实施,无法保证这比您到目前为止找到的5s频率更快。