从LocationManager获取多个NETWORK_PROVIDER

时间:2012-08-08 04:55:43

标签: android networking provider locationmanager

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数据。

1 个答案:

答案 0 :(得分:0)

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

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