Action services что это за программа на андроид
Приветствую. Android Pie — девятая версия Андроида, содержащая новые функции, настройки, повысилась скорость работы. Например появилась необычная функция Digital Wellbeing, которая препятствует чрезмерному использованию телефону. Среди новых опций — Actions Services, о которой сегодня пойдет речь.
Actions Services — что это такое?
Системное приложение для работы интеллектуальных/умных подсказок, предложений. Например при выделении такого текста как:
- адрес — может предложить сразу перейти в Карты (Google Maps);
- номер телефона — предложит перейти в звонилку;
- ФИО человека — будет предложен способ связи.
Это только часть опций, в реальности думаю вариантов использования больше.
Может присутствовать например на Xiaomi Mi A1.
Является частью Android 9 Pie. По отзывам некоторых юзеров — использует много оперативки (RAM).
Для своей работы использует системные разрешения.
Для полноценной работы необходим доступ к уведомлениям:
Пример — выделяете адрес, после чего может быть предложение показать на карте:
Actions Services добавляет в меню специальную область часто используемых приложений, функций, пример:
Достаточно удобно. Например при частых звонках маме, а также частом открытии новой вкладки в браузере — данные действия будут удобно отображены в меню:
Для подсказок Actions Services также может использовать ваше текущее местоположение (при наличии включенного GPS).
Социальная сеть Facebook* является сегодня самой популярной в мире, поэтому неудивительно, что соответствующее мобильное приложение установлено у огромного количества пользователей. Мобильный клиент позволяет вам получать уведомления о новых лайках, постить фотки своей еды и всегда оставаться на связи с друзьями. Однако взамен это приложение потребляет огромное количество системных ресурсов и значительно уменьшает срок работы мобильного гаджета от батареи. Согласно ежегодному отчёту App Report 2015 AVG Android App Report, именно мобильный клиент Facebook* занимает верхние строчки в хит-параде самых прожорливых программ на платформе Android.
Альтернатива. Используйте мобильную версию Facebook* в любом современном браузере. Функциональность отличается ненамного, зато отсутствуют раздражающие уведомления и стремительно тающая батарея.
The Weather Channel и другие погодные приложения
The Weather Channel — отличный пример того, как на самой простой функции — отображении прогноза погоды — разработчики умудряются выстроить целый мегакомбайн. Здесь вы увидите и анимированные обои, и метеорологические карты, и букет интерактивных виджетов, и бог знает что ещё. Всё это хозяйство сидит в оперативной памяти устройства, каждые пять минут стучится в интернет и, разумеется, самым бессовестным образом съедает заряд вашей батареи.
Альтернатива. Выгляните в окошко — вы получите гораздо более надёжную информацию, чем то, что показывает виджет рабочего стола. Если необходим прогноз, то Google предоставит вам самое надёжное предсказание на неделю вперёд.
AntiVirus FREE и другие антивирусные программы
Дискуссия о том, нужны ли антивирусные программы на устройствах под управлением Android, иногда бывает довольно горячей. Я придерживаюсь мнения, что если вы не получаете root-права на устройстве и не устанавливаете взломанные программы из сторонних сомнительных источников, то антивирус вам не нужен. Компания Google бдительно следит за содержимым своего магазина и моментально удаляет из него все потенциально опасные элементы, поэтому всегда активный мониторинг антивируса будет только зря тормозить ваш смартфон или планшет.
Альтернатива. Если возникли всё-таки сомнения в здоровье гаджета, то установите антивирус, просканируйте, а затем удалите его.
Clean Master и другие оптимизаторы системы
Вера в чудеса является самой главной движущей силой для распространения разных «очистителей» и «оптимизаторов». Мол, сотни лучших программистов Google не смогли довести свою систему до ума, а вот этот изобретатель-одиночка взял и сделал! Спешим вас расстроить: большинство подобных приложений либо вообще ничего не делают, либо наносят только вред. Очистить кэш, удалить остатки старых программ можно и встроенными системными инструментами. Очистка же памяти на самом деле только замедляет запуск программ и работу Android вместо обещанного создателями утилит ускорения системы.
Альтернатива. Используйте имеющиеся в Android инструменты для очистки кэша приложений. Забудьте об оптимизации памяти.
Дефолтный браузер
Некоторые производители и разработчики сторонних прошивок снабжают свои творения специальными версиями браузера. Как правило, в них намертво вшиты ссылки на сайты рекламодателей и другой ненужный вам контент. Кроме этого, никто не может поручиться, что такой браузер не сливает вашу информацию налево. Лучше никогда не использовать подобную программу и вообще, если это возможно, удалить её из системы.
Альтернатива. Для Android существуют десятки хороших браузеров, но самым надёжным и быстрым является, несомненно, Google Chrome. Он функционален, обладает поддержкой самых современных веб-технологий, умеет экономить мобильный трафик и обладает простым и понятным интерфейсом.
А какие приложения вы считаете самыми вредными на платформе Android?
*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.
Небольшая продолжительность работы от батареи является одним из главных недостатков современных мобильных устройств. Однако в Android, благодаря огромному количеству настроек и специальному софту, можно попытаться решить эту проблему. Ниже вы найдёте подробное руководство, которое поможет вам значительно снизить энергопотребление системы и увеличить время жизни батареи вашего гаджета.
Хотим сразу предупредить, что данное руководство вряд ли подойдёт начинающим пользователям, так как требует некоторых знаний, а также решимости и желания ковыряться в недрах Android. Некоторые из ссылок в этой статье приведут вас на англоязычные сайты, поэтому для получения дополнительной информации вам понадобятся базовые знания иностранного языка. Кроме этого, все действия вы производите на свой страх и риск, а мы не несём ответственности за результат и возможные сбои в работе вашего устройства.
Ну, теперь, когда все формальности соблюдены, поехали!
Что вам понадобится
Прежде всего вот вам список всех необходимых инструментов и программ, которые будут использованы в этой инструкции. Возле некоторых из них я привёл ссылки на статьи, в которых вы можете получить дополнительные сведения. Каждой из этих утилит в статье будет посвящён отдельный раздел, включающий ссылки для скачивания и описание основных настроек.
- Root — «Руководство по получению root-прав на Android».
- Xposed Framework — «Xposed Framework — новые возможности для вашего Android».
- Greenify — «Спаси батарею Android-смартфона с Greenify».
- Amplify.
- MyAndroidTools.
- AppOpsXposed.
- AdAway — «Как убрать рекламу в браузере и приложениях Android».
- PowerNap.
Изменение базовых настроек
Начнём инструкцию с того, что лежит на поверхности. Описанные в этом разделе базовые настройки все знают, но далеко не все утруждают себя сделать необходимые изменения, обеспечивающие снижение энергопотребления смартфона или планшета.
1. Настройки экрана
Яркость экрана является одним из главных факторов, влияющих на время жизни батареи. Чем яркость выше, тем быстрее батарея разряжается. При этом лучше изменять яркость вручную, а не доверять автоматической регулировке. Далеко не всегда автоматика правильно срабатывает, да и датчик освещённости требует дополнительного питания. Не забудьте также установить время выключения экрана на 30 секунд или менее.
2. Передача данных
Это очень простой совет, но он реально продлевает жизнь устройства. Переключайте тип сети с 3G на 2G на то время, когда вам не требуется мобильный интернет и вы используете смартфон только для звонков.
3. Wi-Fi
Даже в те моменты, когда Wi-Fi отключён, ваш смартфон ищет доступную сеть. Отключить эту опцию можно, перейдя в «Настройки» → Wi-Fi → «Дополнительные функции» → «Всегда искать сети».
4. Определение местоположения
Ещё один поглотитель энергии — это сервис определения местоположения. Выключите его в том случае, если он вам в данное время не нужен: «Настройки» → «Местоположение».
Настройки программ
Теперь, когда вы оптимизировали все базовые настройки, можно начать погружаться глубже. Следующие действия будут касаться системных служб и процессов, которые скрыты от взгляда обычного пользователя.
1. Xposed Framework
Это приложение представляет собой рабочую среду, служащую для запуска нужных нам программ. Так что первым делом необходимо позаботиться об установке Xposed на своё устройство.
- Для Android версий 4.0.3–4.4 установочный файл можно скачать здесь.
- Для Android версий 5.0+ (частичная поддержка) все необходимые файлы и инструкции можно найти в этом топике. Подробное описание процедуры установки можно прочитать здесь.
- Для Samsung TouchWiz ROM скачать Xposed Framework можно здесь.
2. Greenify
Вы можете использовать Greenify для «заморозки» приложений и сервисов, которые вам не нужны. Обратите внимание, что вам понадобится именно версия Greenify (Donation Package), которая содержит некоторые дополнительные и экспериментальные функции. После установки Greenify вы должны будете активировать соответствующий модуль в Xposed. Затем активируйте режим ускорения и экспериментальные функции в настройках программы.
«Заморозьте» программы, которые потребляют энергию аккумулятора в фоновом режиме. В моём случае получился следующий список:
- Browser;
- Hike;
- Instagram*;
- Google+;
- Messenger;
- Music;
- Walkman;
- UC Browser;
- XDA;
- Hangouts;
- Album;
- Calendar;
- Calendar Storage (Use alternate calendar);
- Camera;
- File Commander;
- MX Player;
- SHAREit;
- Maps.
3. MyAndroidTools
С помощью этого приложения вы сможете отключить ненужные системные сервисы и фоновые процессы. В первую очередь необходимо обратить внимание на элементы, входящие в Google Play Services. Вот перечень тех, которые можно заблокировать:
- AnalyticsService.
- FeedbackService (зависит Play Games).
- AdRequestBrokerService.
- NetworkLocationService (Location Service).
- GoogleLocationManagerService (Location Service).
- FusedProviderService (Location Service).
- GeofenceProviderService (Location Service).
- negotiationService.
- WatchdogService (возможно, зависит Google Play Music).
- WearableService (возможно, зависит Google Play Music).
Обязательно отключите AnalyticsService, который добавляется приложением Facebook* и Facebook* Messenger. Кроме этого, в разделе Broadcast Recievers-Actions отключите автостарт лишних программ.
4. Amplify
Amplify является лучшим приложением для экономии батареи, которое должно быть установлено на устройстве всех продвинутых пользователей Android. Оно позволяет блокировать события, приводящие к пробуждению системы. Предпочтительнее использовать полную версию этой программы для работы всех её функций.
В бесплатной версии Amplify управляет только теми системными процессами, которые более всего беспокоят устройство:
- NlpWakelock;
- NlpCollectorWakeLock;
- ALARM_WAKEUP_LOCATOR;
- ALARM_WAKE_ACTIVITY_DETECTION.
В полной версии вы сможете установить свои собственные разрешения и тайминги пробуждения практически для любых системных процессов.
Alarms (Разрешить каждые 7 200 секунд):
Alarms [LOCATION] (Разрешить каждые 40 000 секунд):
- com.google.android.gms.nlp.ALARM_WAKEUP_LOCATOR;
- com.google.android.gms.nlp.ALARM_WAKEUP_ACTIVITY_D ETECTION;
- ALARM_WAKEUP_BURST_COLLECTOR;
- com.google.android.gms.location.fused.GPS_ALARM_BA LANCED_ACCURACY;
- com.google.android.gms.nlp.ALARM_WAKEUP_ACTIVE_COL LECTOR;
- com.google.android.gms.nlp.ALARM_WAKEUP_PASSIVE_CO LLECTOR;
- com.google.android.gms.nlp.ALARM_WAKEUP_BURST_COLL ECTION_TRIGGER.
Alarm (Разрешить каждые 84 000 секунд):
Wakelocks (Разрешить каждые 7 200 секунд):
- *net_scheduler*;
- GCoreFlp;
- Icing.
Wakelocks (Разрешить каждые 40 000 секунд):
- NlpWakeLock;
- NlpCollectorWakeLock;
- LocationManagerService;
- Config Service Fetch.
Services (Block/Deny):
- com.google.android.gms/com.google.android.location.internal.AnalyticsSamp lerService;
- com.google.android.gms/common.analytics.CoreAnalyticsIntentService;
- ads.jam.NegotiationService.
5. Power Nap
Power Nap — это свободный аналог знаменитой технологии Stamina MOD от компании Sony, но доступный, в отличие от оригинала, для любых устройств под управлением Android. Он обеспечивает максимально глубокий сон устройства после выключения экрана. Это достигается за счёт остановки фоновых сервисов и некоторых других магических действий. В программе вы можете создать список исключений для тех приложений, от которых по-прежнему необходимо получать уведомления.
6. App Ops
Вы можете использовать App Ops, чтобы отключить некоторые права доступа для Google Play Services и Google Services Framework.
Google Play Services:
Google Services Framework:
7. AdAway
Мощная программа для отключения рекламы. Зачем вам тратить энергию аккумулятора ещё и на отображение баннеров? Просто заблокируйте их!
Возможные проблемы
Задержка push-уведомлений. Если вы заметили, что уведомления от приложений стали поступать с некоторым опозданием, то используйте для решения этой проблемы программу Push Notification Fixer, про которую мы писали в этой статье.
Постоянное пробуждение устройства из-за SystemUpdateService Wakelock. Для решения этой проблемы используйте способ, который изложен на этой странице.
Приглашаю высказывать в комментариях все замечания, исправления и благодарности. Там же можно поделиться своим опытом по оптимизации энергопотребления Android.
*Деятельность Meta Platforms Inc. и принадлежащих ей социальных сетей Facebook и Instagram запрещена на территории РФ.
В этой статье я разберу архитектуру и принцип работы основного приложения Android — SystemUI. Меня заинтересовала эта тема, потому что мне интересно, как устроена система, которой пользуется такое огромное количество пользователей и для которой ежедневно выкатываются тысячи приложений в Google Play или просто на просторы интернета. Помимо этого меня интересует вопрос информационной безопасности Android и создаваемых под него приложений.
В системе Android, SystemUI — это приложение, путь к исходному коду которого находится в platform_frameworks_base/packages/SystemUI/, на девайсе оно находится в system/priv-app/-SystemUI.
priv-app — это каталог, где хранятся привилегированные приложения. К слову, по пути system/app лежат предустановленные приложения, а обычные приложения, которые мы устанавливаем на свой девайс самостоятельно, хранятся в data/app.
Тут сразу возникает вопрос: почему нельзя засунуть все предустановленные и привилегированные приложения в один каталог, зачем нужно это разделение?
Дело в том, что некоторые приложения более системные, чем другие:) И это разделение необходимо для того чтобы уменьшить покрытие эксплойтами системных приложений, для получения доступа к защищенным операциям. Можно создавать приложение, которое будет иметь специальный ApplicationInfo.FLAG_SYSTEM и в системе получит больше прав, однако apk файл с таким разрешением будет помещен в раздел system.
Итак, SystemUI — это apk-файл, который по сути своей обычное приложение. Однако, если посмотреть на сложное устройство SystemUI, перестает казаться, что это всего лишь простое приложение, верно?
Данное приложение выполняет весьма важные функции:
- Навигация
- Недавние приложения
- Быстрые настройки
- Панель уведомлений
- Экран блокировки
- Регулятор громкости
- Главный экран
- .
Запуск SystemUI
Как я и говорила выше, SystemUI не похож на обычное приложение, так что его запуск не сопровождается запуском активности, как это происходит у большинства приложений. SystemUI — это глобальный пользовательский интерфейс, который запускается во время процесса загрузки системы и не может быть завершен.
Если мы залезем в SystemServer, который является одним из двух столпов в мире Android (второй — Zygote, но об этом я расскажу как-нибудь в другой раз), то мы можешь найти место, где стартует SystemUI при загрузке системы.
Тут мы видим как запускается сервис SystemUI с помощью непубличного API startServiceAsUser. Если бы вы захотели использовать это, то вам пришлось бы обратиться к рефлексии. Но если вы решите использовать reflection API в Android — подумайте несколько раз, стоит ли это того. Подумайте раз сто:)
Итак, тут создается отдельный процесс для приложения и по факту каждый раздел SystemUI является отдельным сервисом или независимым модулем.
Метод start() вызывается для запуска каждой службы, которые перечислены ниже.
Регулирование громкости
Мы регулярно пользуемся кнопками громкости на своих устройствах, но не задумываемся какие процессы должны произойти в системе для того чтобы мы могли прибавить или убавить звук. Операция кажется довольно простой на словах, но если заглянуть в VolumeUI, который находится в подпапке SystenUI/volume, в разных режимах интерфейс имеет свою вариацию.
Я уже говорила о том, что сервисы SystemUI запускаются методом start(). Если мы посмотрим на класс VolumeUI, то он тоже наследуется от SystemUI.
Тут мы видим что с помощью mEnabled мы определяем, следует ли нам показывать панель с настройкой звука. И судя по VolumeDialogComponent, VolumeUI отображает звуковую панель в виде диалога. Но все действия относительно нажатия на клавиши громкости обрабатываются в PhoneWindow.
Насколько мы видим, KEYCODE_VOLUME_UP (+) не обрабатывается и перейдет в обработку KEYCODE_VOLUME_DOWN (-). И в обоих событиях, как в onKeyDown, так и в onKeyUp вызывается метод dispatchVolumeButtonEventAsSystemService.
Итак, тут у нас вызывается метод adjustVolume, для того чтобы мы могли проверить наш direction, которому будет присвоен параметр события.
В итоге когда мы доберемся до AudioService, где будет вызван sendVolumeUpdate, где помимо вызова метода postVolumeChanged, будет установлен интерфейс HDMI.
RingtonePlayer
RingtonePlayer в Android выполняет роль проигрывателя. Он так же наследуется от SystemUI и в методе start() мы видим:
Здесь у нас устанавливается mCallback, который по сути является экземпляром IRingtonePlayer.
В итоге можно управлять RingtonePlayerService с помощью Binder для воспроизведения звуковых файлов.
PowerUI
PowerUI отвечает за управление питанием и уведомлениями. Аналогично наследуется от SystemUI и имеет метод start().
Тут регистрируется широковещательный приемник, с помощью которого происходит отслеживание изменений.
Задачи
Recents — это основная и часто используемая функция в мобильных устройствах на базе Android.
Главные функции:
- Отображение всех задач
- Переключение между задачами
- Удаление задач
Помимо этого Recents так же наследуется от SystemUI. В RecentsActivity происходит создание и обновление последних задач, чтобы мы могли увидеть их на нашем экране.
А в с помощью RecentTaskInfo мы можем получить информацию о конкретной задаче.
Вообще, запущенные задачи можно вынести в отдельную тему. Я изучила ее со всех сторон, так как хотела размывать экран приложения перед переходом приложения в background, чтобы в RecentsTask отображалась нечитаемая версия снапшота. Однако, проблема заключается в том, что снапшот приложения берется раньше, чем вызывается onPause(). Эту проблему можно решить несколькими способами. Либо выставлять флаг, чтобы система просто скрывала содержимое экрана с помощью
О чем я говорила в предыдущей статье, посвященной как раз снапшотам.
Можно вообще сделать так, чтобы конкретная activity приложения не отображалось в задачах, проставив в манифесте
Либо можно воспользоваться хитростью с помощью
Можно задать основной активности выше приведенный флаг excludeFromRecents = true, для того чтобы ее экран отсутствовал в запущенных задачах, но во время загрузки приложения запустить отдельную задачу, которая будет показывать либо размытый скриншот с основной активности, либо любое другое изображение. Более подробно, как это можно сделать описано в официальной документации на примере Google Drive.
Экран блокировки
Keyguard уже посложнее всех вышеприведенных модулей. Он представляет из себя сервис, который запускается в SystemUI, а управляется при помощи KeyguardViewMediator.
Однако на самом деле KeyguardService самостоятельно не работает с интерфейсом экрана блокировки, он лишь передает информацию в модуль StatusBar, где уже и производятся действия относительно визуального вида экрана и отображения информации.
Панель уведомлений
- Инициализация SystemBars
- Отображение уведомлений
То мы видим ссылку на ресурс из которого читается имя класса и создается его экземпляр.
Таким образом мы видим что тут вызывается StatusBar, который будет работать с выводом уведомлений и UI.
P.S. Подбор материала и более короткие статьи я всегда выставляю на @paradisecurity в телеграм.
1. Теория
-
В манифесте в элементе «manifest» указать разрешение:
Используйте правильное полное или относительное имя класса вашего broadcast-ресивера. В описании ресивера без необходимости не указывайте атрибуты «enabled», «exported» и т.д. Вполне достаточно настроек и атрибутов по умолчанию.
Исключение составляют системные приложения: см. замечание пользователя kolipass.
2. Практика: ошибки и особенности эксплуатации
Разберем ошибки, которые совершают новички при настройке приложения и в коде.
-
После установки или force stop приложение ни разу не запускалось (см. п.1.5).
- «uses-permission» должен быть указан только как прямой потомок элемента «manifest», не нужно его указывать/дублировать в теге «receiver»;
- тег «receiver» должен быть указан только как прямой потомок элемента «application».
3. Отладка ресивера в эмуляторе и на реальных устройствах.
-
В терминале выполните:
Или для отправки ACTION_BOOT_COMPLETED конкретному приложению наберите в терминале:
После запуска эмулятора во вкладке Android Monitor укажите запущенный эмулятор и ваше приложение, чтобы просмотреть логи logcat.
Итоги
Чтобы ваше приложение запускалось при загрузке на всех устройствах, манифест как минимум должен выглядеть так:
Код ресивера, как правило, будет таким:
Надеюсь, эта статья поможет новичкам побороть «коварного врага» под названием «ACTION_BOOT_COMPLETED».
Читайте также: