Я пытаюсь получить геолокацию из сети так:
boolean network_enabled = false;
LocationManager lm;
lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
try{
network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
} catch(Exception ex){
Log.v("my_log_tag", "network location exception: " + ex.toString());
}
if(network_enabled){
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListenerNetwork);
}
Хорошо работает, если мой телефон подключен только через сотовую сеть, но у меня проблема: если мой телефон подключен не только через сотовую сеть, но и к какой-либо точке доступа WiFi (скажем, к моей домашней точке доступа), тогда я не получаю места. Кажется, что Android пытается получить геолокацию с помощью моей точки доступа WiFi, но, конечно, не может. Как я могу заставить Android получать местоположение из сотовой сети и игнорировать любое соединение WiFi?
Я точно знаю, что это возможно, потому что, например, Приложение Яндекс.Карт прекрасно.
Мне нужно сказать еще одну деталь: это приложение Яндекс Карт может получать геолокацию по сети, даже если у меня НЕ установлен флажок Настройки -> Местоположение и безопасность -> Используйте беспроводные сети . Я понятия не имею, как это работает, но, возможно, он использует совершенно другой подход.
Факт : если у меня включен GPS, он использует GPS. Если у меня отключен GPS, но подключение к сотовой сети включено, то он использует сеть для определения местоположения, независимо от соединения WiFi и флажка « Использовать беспроводные сети ».
Как я могу сделать то же самое?
Спасибо.