0

LocationManager 在获取位置数据时如何选择使用哪个 NETWORK_PROVIDER?我希望能够识别 LocationManager 从中选择 NETWORK_PROVIDER 的提供者。

例如,附近有两个 NETWORK_PROVIDER 位置,X(接近)和 Y(不那么接近)。当站在一个地方时,有时 NETWORK_PROVIDER 会是 X,有时是 Y。我假设返回精度最高的位置(这就是通常返回 X 的原因),并且所有其他网络都被忽略,但我想同时返回所有附近网络(或至少前 2 或 3 个)的列表。

任何 .getProvider() 方法(据我所知)都返回提供者的类型(网络、gps、被动),但没有任何东西可以实际识别提供者。返回位置时,位置数据对于提供者来说是唯一的,但不能用于选择提供者。我可以从 X 获取数据,但我不能告诉程序忽略 X(或者我可以吗?)。

无论如何要做到这一点?要返回 NETWORK_PROVIDERS 的列表或数组,然后逐步通过它们获取位置数据?

不,使用 GPS_PROVIDER 不是一个可接受的答案,因为我只需要 NETWORK_PROVIDER 数据。

4

1 回答 1

0

这个答案不是基于任何证据,而是我对位置提供者如何工作的理解。当您请求 NETWORK_PROVIDER 时,您基本上是在要求它为您提供他们根据所有可用信息估计的位置。例如,您可能有 3 个 wifi 网络和 2 个手机信号塔,并且该信息被发送到 Internet 上的服务器。使用该信息,他们会计算出他们认为您在哪里,并将其返回给您。因此,换句话说,network_provider 位置基于您的手机可用的所有 wifi/cell-tower 信息的总和。

单独来说,wifi热点并不能告诉你太多关于你在哪里的信息。手机信号塔会为您提供一些位置信息,但您需要一些来源才能准确地对您的位置进行三角测量。另外,请注意您需要互联网/数据连接,因为该位置是由某些服务器确定的,而不是在您的手机上完成的。这是因为如果没有将每个热点映射到其物理位置的数据库,了解附近的 wifi 热点(更具体地说是 MAC 地址)是没有用的。

于 2012-09-10T10:43:52.523 回答