Android Местоположение Wifi не работает после перезагрузки - PullRequest
1 голос
/ 21 июля 2011

Я использую этот код для получения поставщика местоположения и местоположения.

        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        Criteria criteria = new Criteria();
        mBestProvider = mLocationManager.getBestProvider(criteria, false);
        mLocation = mLocationManager.getLastKnownLocation(mBestProvider);

Если я отключаю GPS, местоположение определяется по сети, но если я перезагружаю телефон (поэтому я теряю последнийположение известно) и с отключенными соединениями 3G.Так что я использую только Wi-Fi, я не могу получить ни одного провайдера, поэтому в любом местеОднако приложение Google Места может найти меня.Я думаю, что это может быть последнее известное местоположение. Но в этом случае мои другие приложения должны быть в состоянии получить это местоположение.Есть идеи, что происходит?

1 Ответ

3 голосов
/ 21 июля 2011

Как вы называете это, он вернет все провайдеры, включенные или нет, потому что вы передаете его как ложное, что, вероятно, является вашим намерением, но вы проверили возвращаемую строку?

mBestProvider = mLocationManager.getBestProvider(criteria, false);

Возможно, вы пользуетесь провайдером gps или сетевым провайдером, я научился не доверять механизму критериев, потому что он работает по-разному для каждого оператора и устройства (из-за этого у меня появились странные ошибки )

Поэтому я всегда спрашиваю конкретно о gps и сетевых провайдерах и проверяю последних из них, а затем использую алгоритм, чтобы определить лучшего из них.

Сетевой провайдер может использовать ячейку или точку доступа / маршрутизаторы Wi-Fi для определения местоположения (Google хранит базу данных с информацией Wi-Fi), так что можно получить исправление с помощью только Wi-Fi, не говоря, что это происходит, но возможно.

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

Если в местах сообщалось о новом местоположении с помощью Wi-Fi, а ваше приложение не может (при условии, что вы действительно подтверждаете, что получаете сетевого провайдера), то есть вероятность, что они используют частный API через Google Location Server (GLS) / MASF сервер через частичную информацию о сотовых / Wi-Fi, но это на крайнем конце кривой оловянной фольги.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...