如何使用 GPS 即时读取位置

How to make an immediate reading location using GPS

我写了一个"Codenameone App",需要在某些情况下做Location的度量,需要立即(at time)读取。

为了实现这个目标,我使用了 Display 对象中的方法 "getLocationSync(long timeout=10000)"。代码是这样的:

Location loc = LocationManager
                            .getLocationManager()
                                  .getCurrentLocationSync(10000);

这个方法的JavaDoc说它现在执行一个措施并建议: "Notice that his method will block until a result is returned so you might want to use something like InfiniteProgress while this is running"

如您所见,我调用方法时超时 10 秒。

好吧,在实践中,我得到一个 Location 对象作为响应,但返回的度量不是立即度量(有时)。此方法会重复相同的结果一段时间(大约 4 或 5 分钟),即使我在这 4 分钟内显着更改 phone 位置也是如此。

另一件事我注意到,大多数时候我调用 "getCurrentLocationSync" "InfiniteProgress" 不会出现。呼唤returns快点。

我是不是做错了什么? 我需要做什么才能根据需要获得真实的位置测量值?

getCurrentLocationSync 等待位置的存在,该位置与纯 GPS 模式更相关,但与现代混合位置 API 无关,例如 iOS/Android 中实现的那些.

默认情况下,iOS 和 Android 使用混合位置 API,这意味着该设备将结合使用 wifi、手机数据和 GPS 为您提供一个位置更准确和即时。即使使用 GPS 也很难知道设备的确切位置,因为位置在相对较大的误差范围内,并且只有在设备开始移动后才能更准确地计算出来。