2012-08-08 2 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의 목록 또는 배열을 반환 한 다음 위치 데이터를 가져 오는 단계를 수행 하시겠습니까?

아니요. NET_PROVIDER 데이터 만 필요하므로 GPS_PROVIDER를 (를) 사용하는 것은 용인 할 수없는 답변입니다.

답변

0

이 답변은 근거에 근거한 것이 아니라 오히려 위치 공급자의 작동 방식에 대한 나의 이해입니다. NETWORK_PROVIDER를 요청하면 기본적으로 사용 가능한 모든 정보를 기반으로 예상 위치를 제공하도록 요청합니다. 예를 들어 Wi-Fi 네트워크 3 개와 셀 타워 2 개가있을 수 있으며 그 정보는 인터넷의 서버로 전송됩니다. 그 정보를 사용하여, 그들은 당신이 생각하는 곳을 계산하고 그것을 당신에게 돌려줍니다. 즉, network_provider 위치는 휴대 전화에서 사용할 수있는 모든 Wi-Fi/셀 타워 정보의 합계를 기반으로합니다.

개별적으로 Wi-Fi 핫스팟은 내가있는 곳을 개별적으로 알려주지 않습니다. 셀 타워는 위치 정보를 제공하지만 위치를 정확하게 삼각형 화하려면 몇 가지 소스가 필요합니다. 또한 위치는 일부 서버에 의해 결정되고 휴대 전화에서는 수행되지 않으므로 인터넷/데이터 연결이 필요합니다. 이는 각 핫스팟을 물리적 위치에 매핑하는 데이터베이스가 없으면 근처의 Wi-Fi 핫스팟 (더 구체적으로 MAC 주소)을 알면 쓸모가 없기 때문입니다.