我在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公里/小时的速度行驶的汽车,这意味着在约50毫米的时间内行驶5米.那么你能建议更好的方法来跟踪这辆车吗?
位置感应硬件(GPS,AGPS等)的精确度和准确性意味着每隔几秒钟更频繁地获取更新不太可能提供有意义的结果.事实上,像融合位置提供商这样的技术可能会优先获得更准确的结果,而不是每隔几百毫秒提供一次结果.
除此之外,每秒多次更新的电池消耗可能非常显着.
所有这一切.获取位置感应硬件正在接收的每个更新的方法是将位置更新间隔和最小位移设置为零,并优先考虑准确性.
locationrequest.setInterval(0); // No delay. // locationrequest.setSmallestDisplacement(0); // This is the default. locationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
请注意,这将为您提供每次更新,但根据硬件限制以及可能的融合位置提供程序实现,不能保证这比您到目前为止找到的5s频率更快.