Местоположение - сложная задача, когда у вас ограниченный срок службы батареи и когда нет сигнала GPS в зданиях и в районах с большим количеством больших зданий и т. Д. Но Android значительно упрощает эту задачу. Когда вы запрашиваете местоположение, вам просто нужно указать, какая точность вам нужна.
Если вы укажете, что вам нужен accuracy
пример *100 meters*
, Android попытается получить местоположение, и если он сможет получить местоположение с точностью до 70 метров, он вернет его вам, но если Android может получить местоположение с точностью выше 100 метров, ваше приложение будет ждать и ничего не получит, пока не будет найдено местоположение с такой точностью.
Обычно Android сначала получает Cell ID, а затем отправляет его на сервер Google, который сопоставляет такие Cell ID, и сервер возвращает широту и долготу с точностью, которая низкая, например, 1000 метров. К этому времени Android также попытается увидеть все сети Wi-Fi в этом районе и также отправит информацию о них на сервер Google, и, если возможно, сервер Google вернет новое местоположение с более высокой точностью, например, на 800 метров.
К этому времени GPS будет включен. Устройству GPS требуется не менее 30 секунд с момента холодного запуска, чтобы получить исправление, поэтому, если оно удастся исправить, оно вернет широту и долготу, но снова с точностью, которая будет максимально возможной для примера 100 метров. Чем дольше работает GPS, тем выше точность.
Важное примечание: для первых двух методов требуется подключение к Интернету. Если нет подключения для передачи данных, вам придется дождаться GPS, но если устройство находится в здании, вы, вероятно, не получите местоположение.