Как сделать локер андроид

Как я писал кастомный локер

Привет хабрастарожилам от хабрановичка. Ровно год назад я решил написать кастомный локер (экран блокировки) для моего старичка Samsung Galaxy Gio в стиле популярного тогда Samsung Galaxy s3. Какие причины заставили меня это сделать, писать не буду, но добавлю лишь то, что в Google Play я программу не собирался выкладывать и каким-либо другим способом заработать на ней не планировал. Данный пост посвящен последствиям моего решения.

Начну издалека. Многие хвалят Android за открытость и возможность заменить и настроить встроенные программы под свои нужды. Что тут сказать? В сравнении с другими популярными ОС, это, безусловно, так, но если копнуть глубже в архитектуру Android возникают трудности и вопросы. Локскрин (в Android это называется keyguard) как раз и вызывает вопросы: почему Google не поступили с ним, так как с лаунчерами, почему не сделали диалог со всеми доступными на устройстве локерами и с возможностью выбрать нужный по умолчанию? Где-то в глубине мозга тихим нерешительным голосом кто-то отвечает: может быть Google (Android Ink. если быть точнее) поступил так из соображений безопасности. Этот голос вероятно прав и многим разработчикам локеров и мне (скромность не позволила приписать себя к их числу) пришлось изобретать велосипед, и не один.

Изучаем исходники

Начал я с использования одного из плюсов Android – из изучения исходников. Я один из тех консерваторов, которые уже 2,5 года сидят на стоковой прошивке (2.3.6), поэтому и исходники изучал соответствующие. Классы, отвечающие за блокировку экрана, лежат в android.policy.jar, что в system/framework. Первоначальной целью было найти «точку входа», т.е. где и когда вызывается локер. Искал здесь.

В классе PhoneWindowManager.java есть метод screenTurnedOff(int why), который вызывает одноименный метод класса KeyguardViewMediator. Проследив, кто кого вызывает, я нашел метод в классе KeyguardViewManager, создающий непосредственно View стокового локера.

Что ж, все гениальное – просто. Решил повторить этот код для своего приложения и получил ошибку – нет нужного permission. Немного погуглив, добавил следующие разрешения: SYSTEM_ALERT_WINDOW и INTERNAL_SYSTEM_WINDOW. Это не помогло.

Вернулся к изучению класса PhoneWindowManager.java:

Для требуемого окна TYPE_KEYGUARD нужно второе из моих добавленных разрешений. Задней точкой тела начал ощущать, что не все так просто, как я себе представлял. Решено было посмотреть на описание этого permission. Вот выдержка из AndroidManifest.xml пакета framework-res.apk.

Вот она – черная полоса в жизни. Ведь я понимал, «signature» – это значит, что использовать этот пермишн может только пакет, подписанный тем же ключом, что и пакет, выдавший это разрешение (в нашем случае — framework-res.apk). Ладно, достаем инструменты для изготовления велосипедов.

Версия один

Первым решением было использовать activity в качестве локскрина. На stackoverflow советуют использовать следующий код:

Признаюсь, в первых версиях я использовал этот метод. У него есть существенные недостатки: статусбар не блокируется, начиная с версии API11 этот метод не работает.

Решение первого недостатка (переполнениестека опять помогло) следующее. Поверх статусбара с помощью WindowManager рисуется прозрачный View, который перехватывает все TouchEvent. Вот служба, реализующая это:

Второго недостатка для меня не существовало, на Gingerbread данный код работал превосходно. На 4pda, куда я опрометчиво выложил свое творение, пользователи жаловались, что на многих телефонах мой локер сворачивался как обычное приложение. Для них найдено такое решение. В качестве стандартного лаунчера устанавливается пустышка. При нажатии кнопки HOME система вызывает мой лаунчер-пустышку. Если кастомный локер активен, лаунчер сразу же закрывается в методе onCreate(), т.е. визуально нажатие кнопки HOME ни к чему не приводит. Если кастомный локер не активен, мой лаунчер тут же вызывает другой правильный лаунчер, который пользователь указал в настройках.

Читайте также:  Как узнать разряд версии андроид

Вот код пустышки:

Выглядело это следующим образом:

Эти велосипеды ездили долго и хорошо, пока я не решил сделать «правильный» локскрин, и уже в стиле Samsung Galaxy S4.

Версия два

Когда системе необходимо запускать кастомный локер? Очевидно, что при выключении экрана. Создадим службу, регистрирующую BroadcastReceiver, т.к. из манифеста данный фильтр не работает.

Необходимо учесть две особенности:

1. Служба должна быть запущена в момент загрузки устройства. Создадим BroadcastReseiver с IntentFilter «android.intent.action.BOOT_COMPLETED». Есть одно НО: служба при запуске должна отключить стандартную блокировку экрана. Особенностью Android является то, что стандартное окно ввода PIN-кода является частью стокового экрана блокировки. Поэтому служба должна запускаться только когда PIN буден введен.

Максимум, на что хватило моей фантазии:

2. Проанализировав PhoneWindowManager видно, что в метод screenTurnedOff(int why) передается переменная why, принимающая 3 значения:
— экран выключился по истечению таймаута (в этом случае стоковый локер запускается с задержкой),
— экран выключился при срабатывании сенсора приближения (во время телефонного разговора),
— экран выключился при нажатии кнопки.
В моем случае такого разнообразия нет. Поэтому служба мониторит состояние телефона, и при входящем звонке или во время разговора экран не блокируется.

Вот основной код службы:

Идея не использовать activity, а использовать WindowManager была еще сильна. Из пяти типов окон, использующих разрешение SYSTEM_ALERT_WINDOW, мне подошел TYPE_SYSTEM_ALERT. Причем у него были очевидные достоинства: блокировался статусбар (по крайней мере, на Gingerbread) и перехватывалось нажатие кнопки HOME (работает даже на Jelly Bean).

Промежуточным звеном между службой и KeyguardView является класс KeyguardMediator:

Дальше история становится менее интересной, так сказать, будничной. На мой локер можно добавлять ярлыки приложений (здесь все стандартно и просто) и виджеты (а вот этот момент достоин отдельной статьи).

Теперь все стало выглядеть современней:

Источник

Блокировки экрана для Андроид

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

Общие данные:

Основные функции:

Дополнительные возможности:

CM Locker — бесплатное приложение для Android, обладающее широким набором функций и качественным русскоязычным интерфейсом. Чтобы разблокировать экран, можно использовать графический ключ или ПИН-код. Имеются разнообразные темы и дополнительные виджеты на рабочий стол. Понравившиеся обои можно добавлять в избранное.

Присутствует интегрированный мастер зарядки, а также инструмент очистки оперативной памяти. Для закрытия фоновых процессов, нагружающих аккумулятор и ОЗУ, достаточно нажать одну клавишу.

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

Ключевые преимущества:

  • Ежедневная автосмена обоев;
  • Быстрый ответ на сообщения;
  • Встроенная система подсказок;
  • Позволяет изменять внешний вид;
  • Контроль расхода заряда аккумулятора;
  • Прогноз погоды (температура, скорость ветра);
  • Высокие позиции в магазине Google Play Market;
  • Возможность отображать уведомления на экране блокировки;
  • Выбор движения для разблокировки (вверх, вправо, в любую сторону).
Читайте также:  Завершение обновления системы android завис при обновлении

Hi Locker — мощная программа для блокировки приложений и экрана при помощи ПИН-кода, графического ключа или отпечатков пальцев. Предлагает выбор красивых обоев и стилей. Умеет показывать события из календаря, а также точное время, дату и прогноз погоды, который автоматически обновляется каждый час.

Основные возможности:

  • Скрытие строки состояния;
  • Встроенная функция App Lock;
  • Удобная система оповещений;
  • Наличие разных виджетов для часов;
  • Имеется несколько методов разблокировки;
  • Вывод обложек песен из музыкального плеера;
  • Быстрый доступ к часто используемому контенту.

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

Вы сможете выставить обратный отсчет дней до важного события, например: Дня Рождения, свадьбы, Нового года, бизнес-встречи. Утилита позволяет установить дополнительную защиту в виде фотопароля.

Возможности Соло Локер:

  • Наличие инструмента AppLock;
  • Изменение цвета и размера шрифта;
  • Напоминания о малом заряде батареи;
  • Ввод своего текста в поле для разблокировки свайпом;
  • Работа с любыми устройствами на Андроид 4.0 и выше.

Echo Notification Lockscreen — качественный блокировщик экрана от компании Double Labs. Умеет защищать доступ к любым программам и играм при помощи установки графического ключа. Вы можете воспользоваться неплохим набором анимированных обоев.

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

Ключевые особенности:

  • Изменение строки состояния;
  • Экономия заряда аккумулятора;
  • Полезная функция «тайм-аут дисплея»;
  • Автоматическая регулировка подсветки;
  • Интеграция с музыкальным проигрывателем;
  • Возможность настройки времени спящего режима;
  • Вывод уведомлений из WatsApp, Viber, Skype и так далее.

Joy Locker может похвастать несколькими способами блокировки дисплея. С помощью специальной функции Charge, вы сможете быть в курсе состояния заряда аккумулятора и предотвращать его повышенную нагрузку. Имеется множество разнообразных обоев и тем, также доступна установка фотографий из SD карты или памяти устройства. Можно скрывать уведомления от определенных сервисов и социальных сетей.

Основные достоинства:

  • Вывод обложек из музыкального проигрывателя;
  • Выбор шаблонов для разблокировки своего смартфона;
  • Быстрый переход к Wi-Fi, Bluetooth, фонарику и так далее;
  • Поддержка 7- и 10-дюймовых дисплеев с высоким разрешением;
  • Предоставление информации о погодных условиях в вашем регионе.

ZUI Locker — популярное программное обеспечение для блокировки Android. Содержит встроенный магазин ZUI Wallpaper с различными HD-темами и виджетами. Присутствует инструмент защиты от случайных нажатий. Есть функция автоматического обновления живых обоев. Доступно средство оптимизации системы RAM Booster.

Главные достоинства:

  • Красивая анимация;
  • Установка таймера сна;
  • Наличие пошагового мастера;
  • Отображение даты и времени;
  • Набор стилей для панели уведомлений;
  • Создание белого и черного списка программ;
  • Двойное нажатие для включения спящего режима;
  • Позволяет снять блокировку экрана одним свайпом.

Go Locker — хорошая утилита, предоставляющая тонкую настройку блокировочного экрана в планшете или телефоне на Андроид. Доступен выбор фона: прозрачный, стандартный, случайный, рабочий стол или своё изображение.

Последняя версия софта позволяет скачать бесплатно новые темы (Рождество, Механика, Космос, Windows 10 и др). Есть опция прямого перехода к телефонной книге, сообщениям, галерее, камере, фонарику и так далее.

Читайте также:  Samsung m51 обновление до android 12

Сильные стороны:

  • Установка горячих клавиш;
  • Использование живых обоев;
  • Необычные стили для Lock Screen;
  • Связь со службой поддержки на официальном сайте;
  • Разблокировка экрана при помощи пароля, ПИН-кода или жестов.
  • Отображение входящих сообщений из Skype, Viber, WatsApp, Facebook, VK, Twitter.

Screen Lock — надежный и простой вариант разблокировки вашего устройства. Включает в себя администратор удаленного управления, предоставляет сразу несколько способов активации дисплея Android, к примеру: встряска (Shake to Wakeup), проведение рукой над датчиком движений, поднятие гаджета над столом и так далее.

Функция Double Tap Widget позволяет блокировать нужные программы при помощи двойного тапа. Pro-версия софта за 2,5 $ отличается более развитыми опциями и отсутствием рекламного контента.

Основные достоинства:

  • Понятное главное меню;
  • Большое количество виджетов;
  • Доступно анимационное сопровождение;
  • Быстрая и удобная настройка уведомлений;
  • Выбор различных звуковых сигналов и вибрации;
  • Способно «будить» экран автоматически разными способами;
  • Поддерживает смартфоны и планшеты на базе ОС Android 2.3 и выше;
  • Возможность заблокировать экран с помощью зажатия определенной клавиши.

Lock Screen от WangQi представляет собой ярлык для быстрой блокировки вашего смартфона. Не содержит каких-либо дополнительных функций. Перед использованием утилиты, следует подтвердить доступ к администратору устройства.

Основные преимущества:

  • Предельно простое управление;
  • Невысокие системные требования;
  • Мгновенный переход к неактивному дисплею;
  • Совместимость с любыми гаджетами на Android.

Мы рассмотрели самые лучшие бесплатные программы на Андроид, отвечающие за блокировку экрана.

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

При помощи Solo Locker вы сможете добавлять собственные надписи на дисплей, подбирать цвет и размер шрифта, а также настраивать внешний вид виджетов операционной системы.

Go Locker и ZUI Locker обладают встроенной коллекцией живых обоев с плавным анимированным сопровождением. Вторая утилита способная не только поставить блокировку, но и запустить средство очистки ОЗУ.

Lock Screen — самая простая программа среди аналогов. Пригодится на случай, если ваш девайс по каким-либо причинам не может перейти в режим блокировки. Для мгновенной активации софта требуется всего один тап по ярлыку на рабочем столе. Чтобы убрать блокировку позже — воспользуйтесь стандартным способом.

Echo Notification Lockscreen и Joy Locker дают возможность настройки оповещений и прочих некоторых параметров, умеют защищать паролем либо графическим ключом важные приложения.

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

Screen Lock предоставит необычные методы снятия блокировки Андроид, например: встряхиванием телефона, использованием датчиков движений и так далее.

Обращаем ваше внимание на программы Шлюз (AppLock), Smart AppLock и App Locker Master, с помощью которых можно защищать не только дисплей, но и такие приложения, как: галерея, камера, настройки, телефонная книга, сообщения, Play Market, почта и прочие. Также в подборку не попало популярное средство HomeBase Lock Screen, но последнее обновление приложения датируется 2013 годом, поэтому мы решили его упустить.

Источник

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