2011-08-29 6 views
2

누군가가 도움을 줄 수 있다면 좋을 것입니다. 내 안드로이드 애플 리케이션에서 포지셔닝을 설정하고 GPS와 NETWORK 제공자 모두에서 locationlisteners를 등록하려고합니다.WiFi가 꺼져 있으면 Android의 network_provider locationprovider에서 아무 것도 반환하지 않습니까?

그러나 네트워크 제공 업체는 네트워크 관련 항목에 전혀 응답하지 않습니다. 즉, Wi-Fi를 사용 설정 한 경우에만 응답을받을 수 있습니다. 그렇지 않으면 항상 시간이 초과됩니다.

내 코드 :

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 1, locationListener); 
.... 
public void onLocationChanged(Location location) { 
     Log.d(TAG, "onLocationChanged;provider;" + location.getProvider() + ",lon;" + location.getLongitude() + ";lat;" + location.getLatitude() + ";accuracy;" + location.getAccuracy()); 
     resultHandler.handleLocationResult(location, false); 
     lm.removeUpdates(this); 

그래서, 내가 응답이 매우 빠르게 얻을 수 있지만,에 와이파이 인 경우 난 단지 아무 일도 발생하지 않습니다에 GSM 있고, 나도 안드로이드 로그 캣에서 아무것도 볼 경우.

나는 requestlocationupdates에서 매개 변수를 변경해 보았습니다. 차이는 없습니다.

내가 할 수있는 것이 있다면, 포인터가 많이 감사 할 것입니다!

편집 : 물론, 네트워크 위치를 시도 할 수있는 이동 통신사 위치 (SMS를 사용하여)를 통해 다른 방법을 positioing, Google지도와 동일한 설정을 시도지도, 내가 생각하는 위치를 얻을 수 있습니다. 물론 나는 리셉션을 가지고있다.

답변

4

나는 거의 같은 살 일이지만 다른 사람들은 같은 문제를 찾고있다. 나는 실제 NETWORK_PROVIDER가 다른 위치를 반환 할 때마다 onLocationChanged가 호출되기 때문이라고 생각한다.

이 경우 캐시 된 위치가 현재이어야하기 때문에 일종의 시간 제한에 도달하면 캐시 된 NETWORK_PROVIDER 위치를 사용해야합니다. 다음 getTime()와 distanceTo()가 합리적인 경우

즉 :

Location lastNetworkLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 

그런 다음 확인.

관련 문제