- Работа с геозонами (geofences) в Android
- Что такое Location APIs?
- Задача
- Алгоритм
- К делу!
- На этом всё!
- IpsGeofence: что это за приложение на Андроиде
- Особенности геофенсинга
- IpsGeofence: что это за приложение на Андроиде от Samsung?
- Особенности геофенсинга
- Как очистить смартфон на Android от лишних предустановленных программ (даже «неудаляемых»)
- Не щадите приложения, смартфон не «сломается»
- Android везде одинаковый, способы быстро удалить приложения — разные
- Не хочешь — заставим, не удаляешься — отключим!
- Удаляем неудаляемое с root-правами
Работа с геозонами (geofences) в Android
Что такое Location APIs?
Location APIs являются частью Google Play сервисов, которая предназначена для создания приложений работающих с местоположением устройства. В отличие от подобных функций в LocationManager, данные API отличаются улучшенным энергосбережением. В данный момент доступна следующая функциональность: определение местоположения устройства, работа с геозонами и распознавание активности пользователя. Определение местоположения позволяет балансировать между точностью определения и потреблением энергии, а также предоставляет доступ к наиболее частым местоположениям. Распознавание активности позволяет узнать, что делает пользователь устройства: едет на машине, едет на велосипеде, идет пешком или находится на одном месте. Ну и, собственно, работа с геозонами позволяет посылать сообщения, когда пользователь устройства входит в конкретную зону, покидает её либо находится в зоне определенный период времени.
На мой взгляд официальный пример довольно сложный и запутанный. Это связано с тем, что в нём:
- попытались показать все возможности Location APIs
- множество комментариев и обработок исключений, которые в примере можно было бы и упустить
- все действия выполняются из активити
Исходя из этого в данной статье я сфокусируюсь только на геозонах и опущу некоторые обработки исключений.
Примечание: Google Play сервисы могут быть отключены на устройстве. Это может нарушить работу многих приложений и система честно предупреждает пользователя об этом перед их отключением. Но всё же хорошим тоном будет проверять это в своем приложении с помощью GooglePlayServicesUtil.isGooglePlayServicesAvailable и как-то предупреждать пользователя.
Задача
Итак, для примера напишем приложение, в котором можно явно указать координаты и радиус геозоны. При входе/выходе из неё в статус бар будет добавляться уведомление с id геозоны и типом перемещения. После выхода из геозоны мы её удалим.
Алгоритм
В общем процесс выглядит следующим образом:
- Из активити создаем сервис, в который передаем данные о геозоне.
- Сервис инициализирует LocationClient.
- Когда LocationClient инициализировался, добавляем в него геозоны (Geofence) и соответствующие им PendingIntent.
- Когда геозоны добавлены, отключаемся от LocationClient и останавливаем сервис.
- Далее вся надежда на PendingIntent, который запустит IntentService при входе в зону или выходе из зоны. Сервис добавляет уведомления в статус бар и создает сервис для удаления отработанных геозон.
- Созданный сервис снова инициализирует LocationClient.
- Когда LocationClient инициализировался, удаляем отработанные геозоны.
- Когда геозоны удалены, отключаемся от LocationClient и останавливаем сервис.
- Profit!
Как мы видим, главным действующим лицом является LocationClient. Он отвечает за доступ к API для определения местоположения и работы с геозонами.
К делу!
Для начала необходимо подключить Google Play сервисы. Как это сделать описано здесь.
Далее в активити инициализируем элементы отображения. Из этой области нас интересует вызов сервиса при обработке нажатия на кнопку:
Тут мы создаем Intent для нашего сервиса (GeofencingService) и передаем в него необходимые данные. Так как GeofencingService отвечает за добавление и удаление геозон (в примере я решил не разделять эти действия на разные сервисы), то нам надо передать тип операции, которая должна быть выполнена сервисом. В данном случае это добавление (GeofencingService.Action.ADD). Также сервису нужны данные о геозоне. Их мы передаем в виде объекта класса MyGeofence, который по сути является оберткой над Geofence.Builder (о нём мы поговорим позже).
Итак, мы передаем координаты центра и радиус зоны, а также тип перемещения. Последний может быть трех видов: GEOFENCE_TRANSITION_ENTER, GEOFENCE_TRANSITION_EXIT и GEOFENCE_TRANSITION_DWELL. Если с первыми двумя все понятно, то к третьему необходимы разъяснения. GEOFENCE_TRANSITION_DWELL указывает на то, что пользователь вошел в зону и пробыл в ней некоторое время. Чтобы использовать этот сигнал, вы должны установить setLoiteringDelay при построении геозоны. В данном примере GEOFENCE_TRANSITION_DWELL не используется.
Перейдем к сервису. Сервис имплементирует GooglePlayServicesClient.ConnectionCallbacks, GooglePlayServicesClient.OnConnectionFailedListener, LocationClient.OnAddGeofencesResultListener, LocationClient.OnRemoveGeofencesResultListener интерфейсы. Это позволяет ему полностью отвечать за работу с LocationClient.
В onStartCommand мы получаем тип операции (ADD или REMOVE) и вытягиваем необходимые для выполнения этого действия данные. После этого инициализируем и запускаем LocationClient:
Прежде чем добавить геозону mGeofenceListsToAdd, мы вызвали метод toGeofence() объекта класса MyGeofence. Я уже говорил, что MyGeofence является обёрткой над Geofence.Builder:
Geofence.Builder — это служебный класс для создания Geofence. Мы задаем необходимые параметры, а потом вызываем метод build() для создания объекта. Выше указан необходимый минимум параметров. Тут стоит обратить внимание на setExpirationDuration. Дело в том, что зарегистрированные геозоны могут быть удалены только в двух случаях: по истечении заданного времени или при явном удалении. Поэтому, если вы передаете в качестве параметра NEVER_EXPIRE, то вы обязаны позаботиться об удалении объекта самостоятельно. Для Location APIs есть ограничение: максимум 100 геозон на одно приложение одновременно.
После того как LocationClient подключится, сработает onConnected колбэк интерфейса GooglePlayServicesClient.ConnectionCallbacks. В нем мы выполняем добавление либо удаление в зависимости от текущего типа действия:
Как мы видим, addGeofences одним из параметров требует PendingIntent, который сработает при перемещении. В нашем случае PendingIntent будет запускать IntentService:
После выполнения действия у нас срабатывают OnAddGeofencesResultListener или onRemoveGeofencesByRequestIdsResult , в которых мы отключаемся от LocationClient и останавливаем сервис:
Последняя часть приложения – это IntentService, который запускается при пересечении границы геозоны пользователем устройства. Все действия выполняются в onHandleIntent:
Здесь у нас фигурируют в основном статические методы LocationClient. Сначала мы делаем проверку на наличие ошибок с помощью hasError. Затем получаем тип перемещения и список сработавших геозон с помощью getGeofenceTransition и getTriggeringGeofences соответственно. Вызываем обработку каждой геозоны и сохраняем её id. Ну и напоследок, удаляем геозоны в случае, если данное перемещение было выходом из геозоны.
Для удаления геозон мы опять создаём сервис, в который передаём тип операции (REMOVE) и список id на удаление:
На этом всё!
Надеюсь пример получился понятным и интересным. Желаю всем хороших приложений!
UPDATE:
Статья и код сильно устарели за 2 года.
Спасибо Vilkaman за обновления кода в репозитории.
Подробнее о работе с обновленным Location API можно прочитать в его статье
Источник
IpsGeofence: что это за приложение на Андроиде
Технология геофенсации была создана не так давно. Суть данного сервиса сводится к автоматическому обнаружению мобильных устройств на определенной территории и выполнению определенного алгоритма действий в автоматическом режиме.
Самый простой пример — SMS-реклама. Как только появляется смартфон с приложением Geofencing (он установлен на заводе-изготовителе) в заранее определенной зоне или рядом с ней, он сразу же начинает получать сообщения. Такие места расположены в торговых центрах, ресторанах, на автозаправочных станциях и т.д. Целью является привлечение потенциальных клиентов, которые могут приобрести продукт или услугу.
Современное IpsGeofencing — это полноценная рабочая среда с собственными особенностями. Это важно для тех, кто часто выезжает за границу в американские и европейские страны.
Особенности геофенсинга
- Привлечение внимания потенциального клиента
Многие организации рассылают акции, промо-коды и дисконтные купоны на смартфоны, которые находятся на территории их обслуживания или рядом с ней. Все, что вам нужно сделать, это определить координаты устройства с помощью GPS и есть ли на нем приложение. В настоящее время большинство компаний не фокусируются на списке доступных им клиентов и рассылают сообщения всем желающим.
- Максимальная локализация рекламных предложений
Часто реклама привязывается к какому-либо событию. Если это международная сторона, то на телефоны проходящих мимо людей будут посылаться соответствующие сообщения. А если есть несколько мест, предоставляющих одни и те же услуги, то уведомлений может быть несколько.
- Сбор и анализ ситуационных данных по пользователям смартфонов
Организации постепенно накапливают базу данных по индивидуальным действиям каждого человека. Это делается для того, чтобы предложить персонализированные услуги или продукт, который будет интересен конкретному человеку. Такой маркетинговый ход позволяет привлечь новых клиентов с похожим поведением.
- Определение местонахождения мобильных устройств
Многие продавцы заранее предупреждают потенциального покупателя о том, что они смогут получить промокод, подарочный сертификат или купон на скидку только тогда, когда будут находиться на определенной территории. Этот метод может использоваться совместно несколькими компаниями, расположенными поблизости — первая отправляет во вторую и наоборот.
При наличии поведенческих данных потенциальных клиентов, организация может сделать индивидуальные предложения поощрительных презентаций, желаемого внешнего вида продукта или услуги, представляющей интерес.
В целом, технология геозащиты постоянно совершенствуется и определяются новые области ее применения.
Источник
IpsGeofence: что это за приложение на Андроиде от Samsung?
30.06.2020 3,626 Просмотры
Технология геофенсинга была создана не так давно. Суть этого сервиса сводится к автоматическому обнаружению мобильных устройств на какой-то конкретной территории и выполнению определенного алгоритма действий в автоматическом режиме.
Самый простой пример — рекламные SMS-рассылки. Как только смартфон с приложением Geofencing (оно устанавливается на заводе-изготовителе) появляется на заранее определенной территории или поблизости от нее, то на него сразу же начинают приходить сообщения. Такие места бывают в торговых центрах, ресторанах, заправочных станциях и т.п. Целью является привлечение потенциальных клиентов, которые могут приобрести товар или услугу.
Особенности геофенсинга
- Привлечение внимания потенциального клиента
Многие организации отправляют информацию о проведении акций, промокоды, купоны со скидками на смартфоны, оказывающиеся на территории их обслуживания или близко к ней. Для этого нужно всего лишь определить координаты устройства с помощью GPS и наличие на нем приложения. В наше время большинство компаний не ориентируются на доступный им список клиентов и рассылают сообщения всем подряд.
- Максимальная локализация рекламных предложений
Зачастую реклама привязывается к какому-либо событию. Если это международный праздник, то соответствующие сообщения будут отправляться на телефоны проходящих мимо людей. А если мест, предоставляющих одинаковые услуги, несколько, то оповещений может быть достаточно много.
- Сбор и анализ ситуационных данных о пользователях смартфонов
В организациях постепенно накапливается база данных об индивидуальных действиях каждого человека.
- Локализация мобильных устройств
Многие продавцы заранее оповещают потенциального клиента о том, что он сможет получить какой-либо промокод, подарочный сертификат или купон со скидкой только тогда, когда будет находиться на определенной территории. Такой прием может использоваться совместно несколькими компаниями, расположенными рядом — первые отправляют ко вторым и наоборот.
Если доступны поведенческие данные потенциальных клиентов, то организация может делать персональные предложения о поощрительных презентах, появлении нужного товара или интересующей услуги.
В целом технология геофенсинга постоянно шлифуется и выявляются все новые способы ее применения.
Источник
Как очистить смартфон на Android от лишних предустановленных программ (даже «неудаляемых»)
Производители мобильников давно потеряли чувство меры (а иногда и страха), поэтому фаршируют каждый новый телефон всё большим количеством софта. Далеко не все из навязанных нам программ полезны, а некоторые даже вредят быстродействию мобильника. Сегодня мы расскажем, как избавиться от бесполезных предустановленных приложений в смартфоне.
Не щадите приложения, смартфон не «сломается»
Набор вещей, которые всегда нужны в смартфоне, не так велик: звонки, SMS, камера, магазин приложений (хотя гики обходятся и без него). Всё! Остальные «радости» можно установить из магазина или никогда не использовать, если они не нужны.
Не стесняйтесь удалять ненужное
Но в таком виде смартфоны уже давно никто не выпускает. Производители дешёвых мобильников зарабатывают на «гербалайфе», то есть, получают деньги за предустановленные в прошивке приложения. Те, кто закрепился в более дорогом сегменте, разрабатывают фирменные «свистелки», чтобы было чем обосновать высокую стоимость и было что упомянуть в рекламе.
Поэтому не стесняйтесь удалять со смартфона всё, что считаете ненужным — современный смартфон невозможно привести в негодность удалением приложений стандартным образом. А если так случится, что вы удалили какой-нибудь новый «Pokemon Go!», по которому мир скоро начнет сходить с ума, не беда — вам прожужжат уши друзья и покажут, как установить приложение или игру заново.
Android везде одинаковый, способы быстро удалить приложения — разные
Большинство предустановленной всячины можно удалить стандартным образом. В большинстве андроидофонов (например, Alcatel, BQ Fly, Lenovo, Philips, Sony, Xiaomi) достаточно коснуться иконки приложения и удерживать его до тех пор, пока сверху не появится надпись «Удалить» или значок урны. Дотягиваете впавший в немилость значок его до урны и отпускаете. Смартфон спросит, уверены ли вы, что хотите удалить приложение — подтверждаете. Миссия выполнена.
Способ удаления приложений в смартфонах со стандартной логикой интерфейса Android
В других смартфонах (к примеру, ASUS, LG, Samsung) простое перетаскивание иконки иногда не срабатывает (зависит от модели), и нужно найти в правом верхнем углу три точки, затем выбрать что-то вроде «Удаление/отключение приложений» и выбрать из сетки приложений кандидата на выход вон из системы.
Способ удаления приложений в ряде моделей ASUS, LG и Samsung
В самых-самых новых Samsung (привет владельцам Galaxy S8!) быстрое удаление приложений производится по-новому: удерживаете палец на значке, после чего справа от него распахивается контекстное меню, как на компьютерах по нажатию правой клавиши мыши, и в нём нужно выбрать пункт «удалить».
Как удалить приложения в оболочке Grace UX (Samsung Galaxy S8)
Не хочешь — заставим, не удаляешься — отключим!
Далеко не все предустановленные приложения можно удалить. Не потому, что они жизненно важны для мобильника и он без них не включится — просто каждый раз, когда вы отправляете в мусорник «Google Play Музыку» или поисковый виджет «Яндекса», где-то в уютных офисах ребята-маркетологи проливают слёзы и считают недополученную прибыль. По этой причине часть компонентов системы придётся «выкорчевывать» из прошивки иным способом.
«Неудаляемые» приложения можно отключить
Простой путь — отключить приложения. Взялись за ярлык, а смартфон говорит: «Приложение нельзя удалить»? Отправляйтесь в настройки системы, находите приложение и выбираете пункт «Отключить» там, где у «простых» приложений есть клавиша «удалить».
Как отключить приложения в оболочке Grace UX (Samsung Galaxy S8)
Если вы занялись чисткой приложений после того, как они обновились из Google Play, «пуленепробиваемое» приложение сначала удалит свою новую версию, и только потом позволит себя отключить. И, вы таки будете смеяться, но некоторые приложения (например, видеоплеер или Google-клавиатуру) нельзя даже отключить. Но Android тем и хорош, что если в нём что-то нельзя, но очень хочется — то можно!
Удаляем неудаляемое с root-правами
Если вы много слышали о каком-то там «руте» на Android-смартфонах, но не могли понять, что это, то объясняем. Рут — это когда пользователь по-настоящему главный в телефоне и может изменять, настраивать меню, надписи, громкость, яркость, скорость работы вне стандартных пределов, переименовывать, «приколачивать» пункты системы от других смартфонов и вообще вытворять со смартфоном примерно то, что творят со своим первым автомобилем юные любители тюнинга.
Производители смартфонов такую «самодеятельность» покупателей терпеть не могут. Они, конечно, не имеют права отказать вам в гарантийном ремонте, например, камеры, даже если в смартфоне стоит нестандартная прошивка. А вот если смартфон «не включается» из-за того, что вы что-то неудачно перенастроили или ампутировали в прошивке — это уже ваши проблемы. Прошивка смартфона не «развалится» сразу же после того, как вы получите root, но если вы установите вирус, замаскированный под обычное приложение и ответите «Да» на вопрос «Предоставить ВКонтакте root-права?», то смартфон спасёт только перепрошивка с компьютера.
Titanium Backup — проверенный способ удалить системные приложения. Да ещё и сделать резервную копию на всякий случай
Это чтобы вы понимали, что ножичком можно не только нарезать салат, но и ранить себя по-глупости. Какое отношение root имеет к удалению приложений? Самое непосредственное!
- Добываем root-права на смартфон. Здесь нет и не может быть универсальной инструкции, в каждом смартфоне она разная, иногда разная даже для разных версий прошивок. Ищите инструкции по запросу «имя _ смартфона root» в интернете.
- Устанавливаем Titanium Backup из Google Play (или откуда вам удобно устанавливать приложения?). Платная версия отличается от бесплатной в мелочах, для удаления стандартного софта денег платить не надо.
- Запускаем Titanium. На самом деле — сгодятся и аналоги (Root App Delete, Root Explorer и др., их очень много).
Выдаём ему права root (с которых всё и начинается), соглашаемся с предупреждениями, выбираем пункт «Резервные копии» и видим список со всеми «потрохами» нашего смартфона.
- Определяемся, что можно безопасно удалить. Например, какой-нибудь «Application Installer» лучше не трогать, иначе ваш смартфон разучится устанавливать приложения навсегда, а вот всякие Hangouts, Google Фото, Evernote, аудио и видеоплееры, e-mail клиенты, Clean Master’ы, облачные хранилища, уродливый стандартный браузер (у вас ведь всё равно Chrome, Opera или Яндекс Браузер?), всяческие агрегаторы новостей Flipboard и др. можно удалять «жэстачайшэ» и без зазрения совести.
- Создаём резервные копии «бесполезных» приложений, и только потом удаляем их.То есть, сначала нажимаем «сохранить», а уж потом — удалить. Чтобы в случае «ой, что-то я лишнее стёр» была возможность вернуть, как было.
Кстати, не надейтесь, что после удаления стандартных приложений в смартфоне прибавится памяти — для системных файлов в Android давно существует отдельных «загончик», поэтому расчистить память для музыки или приложений из Google Play с помощью root-прав вы не сможете.
Источник