можно ли получить местоположение через сотовую сеть, если на устройстве нет тарифного плана?
или ему нужен тарифный план для определения местоположения через сотовую сеть?
нужен ли тарифный план для определения местоположения через сотовую сеть?
Да, это возможно без подключения к данным, например, с помощью UnifiedNLP и соответствующего провайдера определения местоположения . Например, я использую LocalGsmNlpBackend , который загружает выборку базы данных OpenCellId (для нужной мне области) на устройство для локального использования. Эта база данных содержит позиции вышек сотовой связи. Поскольку вы зарегистрированы хотя бы в одном из них, ваше приблизительное местоположение может быть оценено. Добавьте другого провайдера определения местоположения, который, например, основан на WiFi, для большей точности, если хотите. Помимо загрузки данных (желательно при подключении к домашнему Wi-Fi), это работает полностью без подключения для передачи данных.
Убедитесь, что вы выбрали правильный пакет UnifiedNLP, в зависимости от того, установлена ли на вашем устройстве платформа Google (обычно она есть в стандартном ПЗУ, или если вы используете пользовательское ПЗУ, но с установленными GApps) или используете пользовательское ПЗУ без GApps.
Более подробное описание можно найти в моей статье Android без Google: microG , в которой обсуждается вариант на устройстве без Google framework.
На Android приложениям можно предоставить местоположение с помощью двух типов разрешений: android.permission.ACCESS_COARSE_LOCATION
и/илиandroid.permission.ACCESS_FINE_LOCATION
из https://developers.google.com/maps/documentation/android-sdk/location#location_permissions
android.permission.ACCESS_COARSE_LOCATION — позволяет API использовать данные Wi-Fi или мобильных сотовых сетей (или и то, и другое) для определения местоположения устройства. API возвращает местоположение с точностью, примерно равной городскому кварталу.
android.permission.ACCESS_FINE_LOCATION — позволяет API максимально точно определять местоположение от доступных поставщиков услуг определения местоположения, включая глобальную систему позиционирования (GPS), а также данные WiFi и мобильных сотовых сетей.
Таким образом, если приложение предоставляет вам информацию о погоде, все, что нужно приложению ACCESS_COARSE_LOCATION
, даст пользователю хорошее местоположение в радиусе 10 метров, что достаточно, чтобы знать, где находится этот человек в зависимости от погодных условий. Этот уровень точности может быть достигнут с помощью WiFi или данных через сотовые вышки.
Если приложение является приложением для обмена поездками, то ACCESS_FINE_LOCATION
оно необходимо, так как дает местоположение пользователя с точностью до нескольких метров. Это будет использовать GPS, чтобы получить местоположение пользователя.
Итак, мы подошли к вашему вопросу:
можно ли получить местоположение через сотовую сеть, если на устройстве нет тарифного плана?
Если мобильное устройство не имеет тарифного плана для передачи данных через сотовую сеть И данных через Wi-Fi, то приложения не будут работать COARSE_LOCATION
без отдельного Location Provider
(см. ответ @Izzy).
Обратите внимание, что, по крайней мере, в Соединенных Штатах операторы связи обязаны поддерживать E911, который в чрезвычайной ситуации должен быть в состоянии сообщить местонахождение телефона экстренным службам.
Если вы отключены от любой сети сотовой связи, отключены от WiFi и не пользуетесь специализированной, Location Provider
то GPS сможет получить координаты вашего местоположения. Вычисление этих координат требует данных, которые предоставляются в сигнале со спутников, но из-за низкой пропускной способности это займет много минут. Координаты сами по себе не создают приложение, так как любое картографическое приложение должно предварительно кэшировать данные вашей карты (улицы, ориентиры, реки и т. д.) с момента, когда у вас были данные, до момента, когда у вас нет подключения для передачи данных. Наличие подключения для передачи данных ускорит расчет для FINE_LOCATION
.
There is NO generic casual user
и я говорю это как разработчик приложения. Лучше описать то, что вы хотите сделать, также известное как история пользователя или вариант использования, и вы получите более информированный ответ. Если вы занимаетесь навигацией, вам понадобится FINE_LOCATION
энергопотребление и отключения GPS в городских условиях.Существует два основных способа геолокации устройства:
Найдите идентификаторы местных радиопередатчиков и найдите их в базе данных. Технология радиосвязи может быть сотовой, WiFi или Bluetooth; принцип тот же.
Если вы не носите базу данных на устройстве (обычный случай), вам необходимо какое-то подключение для передачи данных. Для передачи данных не обязательно использовать тот же набор передатчиков, что и для поиска местоположения; вы можете искать идентификаторы WiFi, используя сотовое соединение для передачи данных, или вы можете искать сотовые идентификаторы в соединении для передачи данных WiFi.
Если вы носите базу данных на устройстве, вам не нужно подключение для передачи данных. Найдите идентификатор в своей локальной базе данных, как в ответе Иззи.
Моррисон Чанг
продуктивный пользователь
Моррисон Чанг
продуктивный пользователь
Моррисон Чанг
продуктивный пользователь
Моррисон Чанг
продуктивный пользователь