Android networkppider locationprovider никогда ничего не возвращает, если WiFi выключен? - PullRequest
2 голосов
/ 29 августа 2011

Было бы здорово, если бы кто-то мог помочь. Я пытаюсь настроить позиционирование в своем приложении для Android и пытаюсь зарегистрировать списки местоположения в поставщиках GPS и NETWORK, как показано на всех примерах.

Однако мой сетевой провайдер никогда не отвечает на запросы, связанные с сетью, т. Е. Только если WiFi включен, я получаю ответ. Если нет, то это всегда время ожидания.

Мой код:

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);

Итак, если Wi-Fi включен, я получаю ответ довольно быстро, но если у меня включен только GSM, ничего не происходит, и я тоже ничего не вижу в android logcat.

Я попытался изменить параметры запроса в обновлении, а также без разницы.

Если есть что-то, что я могу сделать по-другому, указатели будут очень благодарны!

РЕДАКТИРОВАТЬ: конечно, я пробовал сеть позиционирование другими способами, с помощью позиционирования оператора (с помощью смс), который работает, пробовал ту же настройку с картами Google, карты, я думаю, может получить положение. Конечно, у меня есть прием:)

1 Ответ

4 голосов
/ 02 октября 2012

Я знаю, что это почти год, но для других, ищущих ту же проблему, я полагаю, это связано с тем, что onLocationChanged вызывается только тогда, когда фактический NETWORK_PROVIDER возвращает другое местоположение.

Так что в этом случае, вы должны использовать кэшированное местоположение NETWORK_PROVIDER, если вы достигаете некоторого времени ожидания, потому что кэшированное местоположение должно быть текущим.

т.е.:

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

Затем проверьте, если getTime () ирасстояние () является разумным.

...