А каким способом вы определяете местоположение пользователя?

Доброго времени суток!

После длительных мучений по поиску способов определения местоположения для «единоразового» использования я решил обратиться к Вам, уважаемые знатоки! Дело в том, что я поддерживаю проект уже продолжительное время, и способов определения местоположения было около трех.


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


— Второй способ был модификацией первого, но уже с использованием фонового потока, который при нахождении местоположения информировал об этом, способ оказался лучше первого не во все стороны, но искал местоположение лучше, т.е. заработало так где не работало. Но опять же нашлись девайсы где и этого оказалось недостаточно


— Вот третий способ казалось должен был быть стопроцентным, так как основан был на картах гугла, которые вроде бы должны определять местоположение всегда, когда это возможно. Создавался экземпляр MapView, которая никогда не показывалась, создавался MyLocationOverlay для показа пользователя и он то нас информировал о текущем местоположении. Но вот сегодня столкнулся с устройством, где и это не работало, а все потому, что при создании MapView я использовал пустую строку в качестве ключа. Но сейчас создать ключ для старых версий карт невозможно.


Конечно можно вновь извартиться и использовать новые карты вместо старых, но есть пользователи, у которых нельзя использовать новые карты, а на местоположении завязана одна из основных фич приложения.


Так вот, каким способом определения местоположения пользуетесь Вы и как боретесь с проблемой, что находятся устройства, где это не работает? Буду рад увидеть в качестве ответов примеры, как работает у вас

UPD: с этой статьей знаком, но собрав пример и запустив у себя удивился, насколько это батарее-прожорливо, сделал модификацию, но ничего не помогло
UPD_2: под неопределением местоположения я понимаю либо отсутствие такового, либо его неправильное нахождение, так как иногда приходили результаты 5 минутной давности, а с учетом движения это играет свою роль
  • Вопрос задан
  • 4561 просмотр
Пригласить эксперта
Ответы на вопрос 1
Каждый раз, когда вы создаете MapView не для карт, умирает один маленький и беззащитный котёнок.

Это лишь часть класса, который мы используем, но так можно приятно найти свое местоположение до какого-то там времени.
pastebin.com/4tRpPkp4
Далее если у вас есть ваше местополжение, можно вбить его сюда: developer.android.com/reference/android/location/Geocoder.html (это вариант вместо карт).

Далее: обновляйте локацию максимум 2-3 раза, ибо вас юзеры сожрут! Я бы вообще забыл про такие вещи как:
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 35000, 10, this.locationListener);

ИМХО: лучше вот это:
developer.android.com/reference/android/location/LocationManager.html#requestSingleUpdate(java.lang.String, android.location.LocationListener, android.os.Looper)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы