2012-08-08 53 views
0

LocationManager如何在獲取位置數據時選擇使用哪個NETWORK_PROVIDER?我希望能夠識別LocationManager從中選擇NETWORK_PROVIDER的提供者。從LocationManager獲取多個NETWORK_PROVIDER

例如,附近有兩個NETWORK_PROVIDER位置,X(關閉)和Y(不如關閉)。當站在一個地方,有時NETWORK_PROVIDER將是X,有時是Y.我認爲精度最高的位置會被返回(這就是爲什麼通常會返回X),並且所有其他網絡都會被忽略,但是我想同時返回所有附近網絡(或至少是前2或3)的列表。

任何.getProvider()方法(據我所知)會返回提供者的類型(network,gps,passive),但沒有任何可以真正標識提供者的東西。返回位置時,位置數據對供應商而言是唯一的,但不能用於選擇供應商。我可以從X獲取數據,但是我不能告訴程序忽略X(或者我能嗎?)。

無論如何要做到這一點?要返回一個NETWORK_PROVIDERS列表或數組,然後逐步獲取位置數據?

並且不,使用GPS_PROVIDER不是一個可接受的答案,因爲我只需要NETWORK_PROVIDER數據。

回答

0

這個答案不是基於任何證據,而是我對位置提供者如何工作的理解。當您申請NETWORK_PROVIDER時,您基本上會要求它根據所有可用的信息爲您提供他們估計的位置。例如,您可能有3個wifi網絡和2個蜂窩塔,並且該信息被髮送到互聯網上的服務器。使用這些信息,他們會計算他們認爲自己的位置,然後將其返回給您。所以,換句話說,network_provider的位置是基於手機可用的所有wifi/cell-tower信息的總和。

個別地,wifi熱點並沒有告訴你太多關於你在哪裏。手機信號塔爲您提供一些位置信息,但您需要一些信息來精確地對您的位置進行三角測量。此外,請注意,您需要互聯網/數據連接,因爲該位置由某個服務器決定,而不是在您的手機上完成。這是因爲如果沒有將每個熱點映射到物理位置的數據庫,知道附近的wifi熱點(更具體地說是MAC地址)是沒有用的。