Android как определить страну

Определяем местоположение телефона… без GPS

Перелистывая хаб «Разработка под Java ME» наткнулся на тему Spb Transport J2ME, где автор использует картографические сервисы, и одним из TODO является поддержка GPS (для улучшения юзабилити). Проблема в том что телефонов с встроенным GPS-приемником относительно небольшое количество. Надеюсь данным постом помогу не только автору той темы, но и кому то еще, сам в свое время набил немало шишек. Итак, приступим.

Чтобы определить местоположение пользователя (телефона, как вам угодно), можно использовать несколько способов:
— по GPS. Способ наиболее точный. Из недостатков: относительно долгий старт, потребляет много энергии, не так уж много аппаратов с встроенным приемником.
— по вышкам оператора. Средний по точности. Энергии кушает немного. Из минусов: не на всех телефонах доступны данные.
— по IP. Наименее точный. Собственно это самый большой минус.
— по CB-сообщениям оператора

Итак, нам нужна более-менее приемлемая точность при определении местоположения (для города это примерно 150-300 метров (это где то 1,5-2 минуты пешего хода), за городом соответственно 2-5 км и более, как повезет), так же нам необходимо охватить как можно большее количество аппаратов, и неплохо было бы оперативно обновлять координаты.
Наиболее подходящим будет определение местоположения через данные сотового оператора.

Сервисы:

Чтобы сконвертировать данные сети и получить координаты, нам понадобятся базы данных вышек сотовых операторов. В сети существует немало ресурсов, я использовал проверенные временем GoogleMaps, Yandex.Locator, location-api.com и opencellid.org (для большей точности и надежности используем все сразу). плюс как бонус у Яндекса в API есть метод определения местоположения с учетом силы сигнала, но о этом позже.
У каждого из сервисов есть неплохо документированное API (кроме GoogleMaps). Параметры, принимаемые API: MCC (код страны), MNC (код оператора сети), LAC (код соты), CellID (идентификатор вышки).
API возвратит координаты для данного набора данных.

Данные:

Получить вышеназванные данные задача нетривиальная, ведь каждый из производителей посчитал делом чести изобрести свой велосипед. В результате для каждой марки существует свой набор ключей для вызова System.getProperty(key), отыскать которые не так то легко.
Существует так же ряд других неприятных моментов. К примеру на Siemens’ах данные сети без патчинга прошивки получить не получиться. SonyEricsson возвращает данные в HEX-представлении. Nokia отказывается выдавать LAC несертифицированным (то-есть почти всем) мидлетам.

Решение:

Я написал класс, перебирающий известные ключи и получающий по этим ключам данные о сети. Потом ключи отправлялись в API сервисов, получались координаты и выводилось среднее значение, которое я считаю наиболее правдоподобным (за год использования не припомню случаев очень больших ошибок). Если телефон позволяет получить силу сигнала, мы используем бонус Яндекса: получаем координаты С учетом силы сигнала и БЕЗ, получаем дельту этих значений, применяем ее ко всем результатам от API, выводим средний результат. Как ни странно, последнее решение оказалось палкой о двух концах. При равномерном затухании сигнала точность по сравнению с обычным способом увеличивается раза в два, но если это плотная городская застройка или холмистая местность, где сигнал распространяется неравномерно, в этом случае точность падает достаточно сильно.

В итоге есть возможность определить местоположение на телефонах Siemens, SonyEricsson, Samsung (к примеру s5230), Huawei и прочих. Время загрузки координат и адресов примерно секунд 10-15.

Источник

Android как определить страну

Пример IMEI старого образца: 447402515437650 , где:
ХХХХХХTAC = Type Approval Code — утвержденный код типового образца, модели телефона (первые 2 цифры — код страны)
XXFAC = Final Assembly Code (код страны финальной сборки)
XXXXXXSNR = Serial Number (серийный номер)
XSP = Spare — запасной, практически всегда = 0

FAC мог принимать следующие значения:

По состоянию на 2004 год формат IMEI представляет из себя AA-BBBBBB-CCCCCC-D, хотя он не всегда может отображаться таким образом.

Пример IMEI нового образца: 35-2099 001761481
TAC: 35-2099 — код британского совета по согласованию телекоммуникаций (BABT) и номер модели 2099 (Alcatel One Touch 332)
FAC: 00 — такой код значит что телефон был сделан во время переходного периода, когда FAC был упразднён.
SNR: 176148 — серийный номер аппарата
CD: 1 — контрольное число

Читайте также:  Url плейлиста iptv для андроид

Некоторые значения TAC можно найти здесь

В некоторых странах, например в Латвии, Великобритании, Республике Беларусь изменение IMEI является уголовно наказуемым деянием. Имеется также прецедент попытки уголовного преследования за изменение IMEI в России.

В режиме он-лайн проверить IMEI аппарата и получить информацию о нем можно на одном из следующих ресурсов:

При составлении данной темы использовались следующие статьи:

Сообщение отредактировал о4карег — 22.03.11, 16:28

Источник

Android как определить страну

1.5.0 (22.03.2017)
* Исправление работы с базами

1.4.9 (24.09.2014)
* Исправление работы с журналом вызовов

1.4.8 (23.09.2014)
* Исправление работы с базами

1.4.7 (02.08.2014)
+ Добавлены правила обработки номеров Грузии и Японии

1.4.6 (01.08.2014)
+ Добавлены правила обработки номеров Таиланда и Тайваня

1.4.5 (29.07.2014)
* Исправлено обновление баз

1.4.4 (1.10.2012)
* Исправлена ошибка обработки номеров Литвы

1.4.3 (28.09.2012)
+ Добавлены правила обработки номеров Молдавии и Литвы
+ Небольшое изменение внешнего вида списка баз

1.4.2 (03.08.2012)
+ Добавлены правила обработки номеров Латвии

1.4.1 (20.07.2012)
+ Добавлено уведомление об ошибке при использовании старых баз номеров
* Исправлена ошибка поиска номеров с совпадающими префиксами
* Исправлена ошибка зависания сообщения при USSD-запросе
* Исправлена ошибка, приводящая к падению приложения на Android 4.1, при выборе номера из списка Контактов

1.4.0 (19.07.2012)
+ Изменён формат баз номеров (базы для версий 1.3.x более не поддерживаются)
+ Улучшен алгоритм поиска номеров
* Исправлены ошибки обработки номеров стран с переменной длиной номера (Германия и т.п.)

1.3.9 (03.07.2012)
+ Улучшен алгоритм поиска номеров
+ Небольшие оптимизации ресурсов
* Исправлены обработчики ошибок

1.3.8 (28.06.2012)
* Исправлена ошибка вывода, приводящая к нестабильности отображения сообщения на некоторых устройствах HTC и Samsung

1.3.7 (27.06.2012)
+ Добавлена возможность выбора отображать или нет информацию об абонентах в Контактах
* Исправлен выбор номера из Контактов
* Исправлены правила обработки номеров Казахстана

1.3.6 (14.06.2012)
+ Небольшие изменения интерфейса
+ Добавлена опция «Скрывать сообщение при нажатии»
+ Улучшены правила обработки номеров совпадающих диапазонов
* Исправлена ошибка правил обработки стран для которых отсутствуют базы номеров

1.3.5 (31.05.2012)
+ Сгруппированы настройки для вх./исх. вызовов
* Исправлены правила обработки номеров Сербии и некоторых других стран
* Исправлена ошибка обработки номеров Германии

1.3.4 (15.05.2012)
* Исправлены правила обработки номеров Казахстана и некоторых других стран

1.3.3 (12.05.2012)
+ Небольшие изменения в процедурах скачивания и установки баз
+ Изменена пиктограмма приложения

1.3.2 (27.04.2012)
+ Изменения в настройках внешнего вида сообщения. Добавлены «Фон», «Рамка» и т.п.
— Удалена настройка «Стиль сообщения»
* Исправлена (на этот раз точно) ошибка отображения города в сообщениях и уведомлениях

1.3.1 (21.04.2012)
+ Добавлены кнопки выбора номера из Списка контактов и Журнала вызовов
* Исправлена ошибка настроек при изменении стиля сообщения
* Исправлена ошибка создания папки для хранения баз при первой установке приложения

1.3 (17.04.2012)
+ Изменён формат базы
+ Добавлена возможность установки и обновления баз через Интернет
+ Добавлена поддержка установки на SD-карту (с Android 2.1 и выше)
+ Изменены настройки по умолчанию «Прозрачность» (25%) и «Расположение» (внизу)
* Исправлена ошибка отображения города в сообщениях и уведомлениях

1.2.11 (17.10.2011)
* Исправлена ошибка с отсутствующим полем города в окне «Результаты поиска»
* Исправлена ошибка в списке стран на устройствах с английской локалью
* Исправлен баг с нечитаемыми надписями в настройках приложения на устройствах с английской локалью

1.2.10 (14.10.2011)
* Исправлен баг в ресурсах, приводящий к падению приложения на устройствах с английской локалью

1.2.9 (14.10.2011)
+ Добавлены настройки времени показа для исх./вх. сообщений (показывать до завершения, до ответа, заданное время)
* Исправлены настройки «Смещение по X/Y» (убраны «мёртвые зоны»)
* Исправлен баг настройки «Размер текста»

1.2.8 (11.10.2011)
+ Добавлены настройки для сообщений и уведомлений с выбором ВСЕХ отображаемых данных (Номер, Страна, Регион, Оператор)
+ Добавлены настройки «Смещение сообщения по вертикали и горизонтали»
+ Добавлены поясняющие сообщения в окно Поиска
* Исправлены баги с настройками
* Исправлен баг с пустым сообщением при USSD-запросе (в очередной раз)

1.2.7 (10.10.2011)
+ Изменена настройка «Прозрачность» (инвертировано значение)
* Исправлены баги предыдущей версии

1.2.6 (9.10.2011)
+ Добавлена настройка «Скрыть сообщение после ответа на входящий вызов»
+ Добавлены подсказки при вводе номера и сообщения об ошибках
+ Изменения настройки «Ваше местонахождение»
* Исправлен баг при анализе номера с несуществующим кодом страны
* Исправлен баг при анализе очень коротких номеров
* Исправлен баг с пустым сообщением при USSD-запросе

Читайте также:  Как сохранить страницу пдф андроид

1.2.5 (7.10.2011)
+ Добавлена возможность определения номера в местном (не в международном) формате
+ Добавлена настройка «Размер текста»
+ Добавлены настройки для выбора отображаемых данных (Номер, Страна) в сообщении
* Изменён вид настройки «Прозрачность сообщения»
* Оптимизация кода: списки параметров, списки стран

1.2.4 (30.09.2011)
+ Добавлен параметр «Прозрачность сообщения»
* Исправлен баг с опциями показа в настройках
* Исправлен баг с Тестом сообщения в настройках
* Исправлены настройки положения при выборе сообщения вида «Полоса»

1.2.3 (28.09.2011)
+ Добавлены параметры в настройки (расположение сообщения, выравнивание текста в нём)
+ Добавлены виды сообщений (тост, полоса, только текст без фона)
+ Изменён способ вывода сообщений (теперь стабильно работает со всеми сторонними приложениями типа Full/BIG/Smart Screen CallerID, оболочками MIUI и HTC Sense)
* Незначительные оптимизации кода

1.2.2 (20.09.2011)
* Исправлен баг (неработоспособность до первого запуска приложения) после перезагрузки или засыпания устройства

1.2.1 (19.09.2011)
+ Добавлен тест всплывающего сообщения в настройках
* Исправлен баг при определении стран

1.2 (19.09.2011)
+ Изменён формат базы
* Исправлен баг при звонках на USSD-номера
* Исправлен баг работы с базой на Android 2.3 и выше

1.1.1 (16.09.2011)
+ Добавлен пункт меню «Базы данных» для отображения состояния SD-карты и баз

1.1 (15.09.2011)
+ Изменён формат базы
+ Добавлены базы России и Украины
+ Добавлены Настройки сообщений и уведомлений
+ Добавлено отображение сообщений и уведомлений при исходящих звонках
+ Добавлены настройки расположения сообщения на экране
+ Всплывающее сообщение показывается на протяжении всего разговора

1.0 (01.09.2011)
+ Первая версия

  • Добавить возможность отражать или нет инфу о тех абонентах, что есть в телефонной книге
  • Добавить выбор цвета шрифта и фона
  • Добавить форматирование номера (т.е. например +7 (495) 123-45-67)
  • Добавить несколько расположений окна сообщения (отдельно для исх., входящих вызовов и т.д.)
  • Изменить настройки — сгруппировать: для входящих звонков, для исходящих.
  • Добавить проверку обновлений раз в сутки и авто-обновления баз
  • Добавить возможность скрывать сообщение при нажатии на него
  • Расширенный журнал звонков. Добавить к номерам информацию о регионе, плюс к тому прикрутить к пропущенным звонкам время дозвона или количество гудков дозвона (чтобы иметь косвенное представление о важности этого звонка: звонили до посинения, позвонили случайно. ). и возможность открытия пропущенного зонка из трея в данной программе, а не в стоковой звонилке.

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

Поддержите разработчика и помогите развитию проекта!
(Яндекс.Деньги): https://money.yandex.ru/to/410011150391193

Сообщение отредактировал igoRRRek — 08.01.19, 21:03

Источник

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

Многие пользователи в курсе, что местонахождение смартфона в случае его кражи или утери можно выяснить удаленно. Многие отправляют родственникам и друзьям ссылки со своим местоположением. Иными словами, люди пользуются геолокацией, но мало кто задается вопросом – откуда эти данные берутся?

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

Откуда мобильное устройство берет данные о местоположении?

Есть несколько способов, с помощью которых смартфон может определить свои координаты. Некоторые из этих способов требуют подключения к беспроводным сетям.

Интернет-соединение

При подключении ко всемирной паутине устройство получает от провайдера IP-адрес (Internet Protocol Address). Это нечто вроде телефонного номера или идентификатора устройства в сети. Статические IP не меняются, динамические выдаются провайдером каждый раз при новом подключении. IP открыт для просмотра, но его можно подменить на другой с помощью VPN.

Если вообще не подключаться к Wi-Fi или сотовой передаче данных, то и IP у устройства не будет. Соответственно этот способ мобильной геолокации работать не будет.

Однако и с неактивным интернет-соединением смартфон все равно имеет возможность собирать данные о местоположении через функцию GPS-трекинга. Она работает аналогично Wi-Fi, только соединение в этом случае обеспечивает оператор сотовой связи, а не интернет-провайдер.

Данные GPS

Функция GPS служит для определения местоположения устройства по орбитальным спутникам. Она не требует подключения к интернету и работает практически в любой точке земного шара.

За счет GPS-данных работают карты Google и Apple. Сторонние приложения, использующие API-интерфейсы этих платформ, в период активности также могут иметь доступ к данным GPS.

При запуске приложения или в его настройках пользователь может запретить доступ к GPS, но не факт, что после этого приложение будет работать корректно. Также функцию определения местоположения можно отключить в настройках самого смартфона.

Читайте также:  Яндекс карты для андроид папка для карт

Даже при отключенной функции GPS сетевой провайдер может выяснить, где находится смартфон. Это делается по запросу пользователя, если устройство было утеряно или украдено.

Геоданные требуют внимательного обращения!

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

Мобильная геолокация: вред и польза

Вопрос приватности – личное дело каждого. Кто-то принимает серьезные меры для защиты своей частной жизни. А кто-то совсем не против открыто делиться своим местоположением.

Почему сбор геоданных – это хорошо

Разрешите хотя бы нескольким приложениям собирать геоданные, и взамен вы получите важные преимущества. Выше упоминались случаи кражи и утери мобильного устройства: при включенной геолокации обнаружить его местонахождение можно своими силами в любой момент. Если же беда случится не со смартфоном, то службы спасения смогут выяснить координаты происшествия, чтобы вовремя оказать помощь.

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

У Snapchat есть геофильтры – уникальные наложения для фотоснимков, которые активируются только в определенных местах мира. Это делается также на основе географических координат.

Чтобы о вашем местоположении знали только близкие, делитесь геоданными с конкретными людьми через профиль Google, а не платформы социальных сетей.

Почему сбор геоданных – это плохо

Часть пользователей опасается, что данные о местоположении могут попасть в руки мошенников, и тогда последствия будут непредсказуемыми. Действительно, такая вероятность существует, однако в большинстве случаев бояться нечего.

Ежесекундно сервисами собирается столько геоданных, что выделить из них относящиеся к какому-то конкретному человеку попросту нереально. К тому же геолокационные службы Apple и Google анонимизируют информацию прежде чем передавать ее агрегаторам.

Не всем мобильным приложениям и службам можно доверять, и далеко не все используют инструменты шифрования.

Только в двух случаях использование геоданных может привести к нежелательным последствиям: когда их перехватывает небезопасное приложение или когда вы собственноручно публикуете их в открытом доступе.

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

Некоторые сайты интересуются вашим местоположением в коммерческих целях – для рекламного таргетинга. С одной стороны, ничего плохого здесь нет, так как вы получаете актуальные рекламные предложения. Но с другой, слишком персонализированная реклама вызывает у многих пользователей раздражение.

Кроме того, потоковые медиасервисы используют ограничения на основе геоданных, чтобы запретить доступ к своему контенту определенной стране. Так, часть приложений на Google Play недоступна пользователям России просто потому, что разработчики решили сотрудничать с другими рынками. Обычно ограничения такого рода легко преодолеваются при помощи VPN.

Все не так просто

Персонализированная реклама, внезапные уведомления о скидках и предложения посетить уютный ресторанчик прямо за углом – все это волей-неволей провоцирует мысли о тотальной слежке. Смартфон явно знает лишнее, и нельзя винить тех, кто стремится полностью отключить функцию геолокации, невзирая на любые преимущества, которые она может дать.

Увы, есть только один способ не дать смартфону отслеживать ваше местоположение: оставить его дома.

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

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

Местоположение вашего устройства и вы

Wi-Fi, мобильная передача данных и GPS – основные инструменты, при помощи которых смартфон может узнать ваше местоположение. Эти функции можно при желании отключить, но полностью запретить смартфону сбор и передачу геоданных нельзя. В целом это даже хорошо: ведь никто не станет возражать, если в экстренной ситуации службы помощи смогут быстро приехать в нужную точку.

Источник

Оцените статью