有啥方法可以在 Android 中获得快速(5 毫秒)的位置更新..?
Posted
技术标签:
【中文标题】有啥方法可以在 Android 中获得快速(5 毫秒)的位置更新..?【英文标题】:Is there any way to get Fast (5 milliseconds) location updates in Android..?有什么方法可以在 Android 中获得快速(5 毫秒)的位置更新..? 【发布时间】:2014-01-10 02:40:43 【问题描述】:我在 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 的最佳分辨率通常在 5m 左右。为了使您的请求有价值,设备必须在 5 毫秒内移动该距离。这大约是 1000m/s,或者是音速的三倍。你确定你有这个权利吗? 每秒 200 次位置更新,精度不到几米?恐怕您无法通过手机获得此功能。即使是用于高精度利用的专用专业设备也不会这样做。鉴于民用 GPS 不能比几米更准确,您要求的是不可能的。 对不起,你还是问错了问题。最大更新速率因手机和特定制造商实施而异。如果没有在任何给定的设备上测量它,这是另一个不可能的问题。但是,如果您使用位置更新侦听器,您每秒不会获得超过 1 或 2 次更新,或者可能是大约 3 到 5 米。再来一次 - 请描述你想要做什么。 我不知道 Fused,无论您尝试多长时间获取更新,都无法比系统提供的更新更快地获取更新。您将再次获得相同的位置。请参阅developer.android.com/reference/android/location/…、float、android.location.Criteria、android.location.LocationListener、android.os.Looper)。这是我的最后一条评论,因为您不想描述您要做什么。很可能有比将 GPS 用于非设计用途更好的方法。 这个问题似乎离题了,因为它是关于非常专业的跟踪硬件和软件 【参考方案1】:位置感应硬件(GPS、AGPS 等)的精确度和准确度意味着比每隔几秒更频繁地获取更新不太可能提供有意义的结果。事实上,像 Fused Location Provider 这样的技术可能会优先考虑获得更准确的结果,而不是每几百毫秒提供一次结果。
除此之外,每秒多次更新可能会非常显着地消耗电池电量。
说了这么多。获取位置感应硬件接收到的每次更新的方法是将位置更新间隔和最小位移设置为零,并优先考虑准确性。
locationrequest.setInterval(0); // No delay.
// locationrequest.setSmallestDisplacement(0); // This is the default.
locationrequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
请注意,这将为您提供每次更新,但取决于硬件限制,以及可能的 Fused Location Provider 实施,无法保证这会比您目前发现的 5s 频率更快。
【讨论】:
感谢您的快速回复...我已经更新了我的问题,请再次查看并建议我更好的跟踪方式? 如果您在直线行驶(拖车?),您可以尝试使用加速度计(用加速度计跟踪速度将是一个新问题)。如果是赛道,您将需要专门的硬件 - 很可能是赛道上的物理传感器,用于检测您的汽车何时通过它们,以及车内的转发器来识别它。以上是关于有啥方法可以在 Android 中获得快速(5 毫秒)的位置更新..?的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以指导 Proguard(在 Android 上)保存中间 jars?
有啥方法可以在 Eclipse 中获得类似 IntelliJ 的自动完成功能?