如何从我的安卓设备的GPS硬件获取最高的GPS更新速率

12

我曾经从其他平台转到Android程序开发,这些平台都具有GPS功能。在其他平台上,我可以访问GPS硬件(使用低级别GPS驱动器),以此每秒获得5次或更多的GPS更新。

现在我正在使用三星Galaxy S2进行开发,我发现它的GPS非常强大,可以每秒提供多个更新。

目前,当我将GPS提供程序设置为在最短时间和最短距离内提供更新时:

mlocManager.requestLocationUpdates( 
    LocationManager.GPS_PROVIDER, 0, 0, mlocListener
); 

我每秒只能得到1个更新(或两个更新之间的最小间隔为800毫秒),这对我的应用程序来说太低了。有没有办法强制GPS硬件以某种方式报告更多的更新?我猜它不会向用户公开,但是否仍有一些方法可以以某种方式访问GPS硬件的寄存器?


我有另一款来自QStarz的蓝牙GPS,可以达到10hz。 - user2613743
我怀疑你无法获得超过1hz的频率。此外,我怀疑你的应用程序不能使用1秒间隔工作,那么插值呢? - AlexWien
确实,插值是一种解决方案。我正在尝试跟踪汽车位置,因此在100公里/小时下的1秒相当于约30米,我需要更好的精度。另外,我想知道(如果有人在这里知道)GPS计算的延迟是多少。我的意思是,当它报告位置时,我们离开这个位置已经过了多长时间。例如,现在也需要插值来了解我们现在所处的位置。因此,如果这也在1秒或半秒的范围内,那么我们必须对2秒进行插值,这对我来说真的很糟糕。 - user2610687
你在实际移动时进行了测量吗?如果你移动得很快,GPS的刷新率通常会更好。 - Pasquale Anatriello
为了确定GPS的滞后,可以让GPS报告一个高精度的静态位置,然后尽可能快速、平稳地起飞,使用加速度计数据准确地计算出你相对于停止位置的位置差,并与GPS所说的进行比较,这应该会给你一些推断的方差,非常粗略。这对于获得一些理解是有用的,但在没有进一步控制的情况下,在实际应用中不太可能有用。 - FredCooke
1个回答

4

目前大多数手机的更新速度不能超过每秒一次,这是硬件GPS的限制。

通常情况下,大多数手机的更新速度为1Hz。

这完全取决于你使用的硬件和场景(室内、室外)。

但是,你可以使用以下方法进行检查:

LocationRequest setFastestInterval (long millis)

这将使您的应用程序以被动方式获取位置,速度比积极获取位置更快,从而节省电力。

与setInterval(long)不同,此参数是精确的。您的应用程序永远不会收到比此值更快的更新。

此方法设置您的应用程序可以处理位置更新的最快速率(以毫秒为单位)。您需要设置此速率,因为其他应用程序也会影响更新发送的速度。定位服务会以任何通过调用LocationRequest.setInterval()请求的应用程序所需的最快速率发送更新。

如果此速率比您的应用程序处理能力更快,则可能会遇到UI闪烁或数据溢出等问题。


2
你能否发布一下你获取 GPS 硬件限制信息的资源链接? - Duncan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接