Доброго времени суток!
После длительных мучений по поиску способов определения местоположения для «единоразового» использования я решил обратиться к Вам, уважаемые знатоки! Дело в том, что я поддерживаю проект уже продолжительное время, и способов определения местоположения было около трех.
— Первый способ был примерно такой, как в этом
примере с перебором провайдеров, однако находились устройства, на которых это не работало, либо работало через раз.
— Второй способ был модификацией первого, но уже с использованием фонового потока, который при нахождении местоположения информировал об этом, способ оказался лучше первого не во все стороны, но искал местоположение лучше, т.е. заработало так где не работало. Но опять же нашлись девайсы где и этого оказалось недостаточно
— Вот третий способ казалось должен был быть стопроцентным, так как основан был на картах гугла, которые вроде бы должны определять местоположение всегда, когда это возможно. Создавался экземпляр MapView, которая никогда не показывалась, создавался MyLocationOverlay для показа пользователя и он то нас информировал о текущем местоположении. Но вот сегодня столкнулся с устройством, где и это не работало, а все потому, что при создании MapView я использовал пустую строку в качестве ключа. Но сейчас создать ключ для старых версий карт невозможно.
Конечно можно вновь извартиться и использовать новые карты вместо старых, но есть пользователи, у которых нельзя использовать новые карты, а на местоположении завязана одна из основных фич приложения.
Так вот, каким способом определения местоположения пользуетесь Вы и как боретесь с проблемой, что находятся устройства, где это не работает? Буду рад увидеть в качестве ответов примеры, как работает у вас
UPD: с этой
статьей знаком, но собрав пример и запустив у себя удивился, насколько это батарее-прожорливо, сделал модификацию, но ничего не помогло
UPD_2: под неопределением местоположения я понимаю либо отсутствие такового, либо его неправильное нахождение, так как иногда приходили результаты 5 минутной давности, а с учетом движения это играет свою роль