- Определяем местоположение телефона… без GPS
- Android как определить страну
- Android как определить страну
- Как смартфоны и приложения узнают, где вы находитесь?
- Откуда мобильное устройство берет данные о местоположении?
- Интернет-соединение
- Данные GPS
- Геоданные требуют внимательного обращения!
- Мобильная геолокация: вред и польза
- Почему сбор геоданных – это хорошо
- Почему сбор геоданных – это плохо
- Все не так просто
- Местоположение вашего устройства и вы
Определяем местоположение телефона… без 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 старого образца: 447402 — 51 — 543765 — 0 , где:
ХХХХХХ — TAC = Type Approval Code — утвержденный код типового образца, модели телефона (первые 2 цифры — код страны)
XX — FAC = Final Assembly Code (код страны финальной сборки)
XXXXXX — SNR = Serial Number (серийный номер)
X — SP = Spare — запасной, практически всегда = 0
FAC мог принимать следующие значения:
По состоянию на 2004 год формат IMEI представляет из себя AA-BBBBBB-CCCCCC-D, хотя он не всегда может отображаться таким образом.
Пример IMEI нового образца: 35-2099 00 — 176148 — 1
TAC: 35-2099 — код британского совета по согласованию телекоммуникаций (BABT) и номер модели 2099 (Alcatel One Touch 332)
FAC: 00 — такой код значит что телефон был сделан во время переходного периода, когда FAC был упразднён.
SNR: 176148 — серийный номер аппарата
CD: 1 — контрольное число
Некоторые значения 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 – основные инструменты, при помощи которых смартфон может узнать ваше местоположение. Эти функции можно при желании отключить, но полностью запретить смартфону сбор и передачу геоданных нельзя. В целом это даже хорошо: ведь никто не станет возражать, если в экстренной ситуации службы помощи смогут быстро приехать в нужную точку.
Источник