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