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

Обновлено: 02.07.2024

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

Способов, которые никак не повлияют на выполнение других приложения, всего два: Widget или Live wallpaper. Я выбрал Live wallpaper, они же "живые обои", потому что они автоматически попадают на все страницы Home screen, и даже на Lock screen. Эта статья содержит практические рекомендации, как создавать "живые обои".

В поисках правды

Документации о "живых обоях" кот наплакал. С момента первого (и единственного) анонса в блоге, случившегося больше 9 лет назад, Гугл не сделал ни одного внятного примера или codelab-а на эту тему. Пришлось разбираться.

Сначала основы. Внутренняя механика Андроида такова, что на устройство мы можем установить только приложение, и устройство всех приложений одинаково. Поскольку "живые обои" — это тоже приложение, то выбор управляющего компонента не велик, и стоит ожидать, что это будет Service. Найти его легко: это WallpaperService.

Экземпляров "живых обоев" может быть несколько, и жизненный цикл у них будет не такой, как у Activity или View. Соответственно, должен быть еще один базовый класс. Это WallpaperService.Engine (и он обязательно inner для WallpaperService!). Если вглядеться, то он окажется таким же поставщиком событий жизненного цикла, как Activity, Service и иже с ними.

Жизненный цикл "живых обоев" выглядит так:

Из этого списка становится понятно, когда можно/нужно перерисовать картинку (либо начать перерисовывать, если у вас анимация), и когда пора прекратить всю активность и не тратить батарейку.

Метод onSurfaceRedrawNeeded() выделяется среди остальных, читайте ниже. Также в помощь есть метод isVisible() (который в Котлине превращается в свойство isVisible ).

Теперь можно собирать этот конструктор. Начну с конца.

Рисуем

Рисовать придется самим на Canvas, никаких layout и inflater нам не будет. Как получить Canvas из SurfaceHolder и как на нем рисовать — за рамками этой статьи, ниже есть простой пример.

Методы жизненного цикла Engine

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

Обратите внимание на onSurfaceRedrawNeeded, который передает нам вызов одноименного коллбэка SurfaceHolder, который возникает при изменении размера и аналогичных событиях. Этот колбэк позволяет выполнить перерисовку немедленно, не допустив показа пользователю старой (и уже неверной) картинки. Система гарантирует, что пока не произошел возврат из этого метода, вывод на экран будет приостановлен.

Scheduler

Я люблю переопределять Handler, а не гонять в нем Runnable. На мой взгляд, так изящней.

Service & Engine

Собирается эта марешка из Service и Engine вот так:

AndroidManifest и другие заклинания

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

В . /app/src/main/res/xml должен лежать XML файл с описанием "живых обоев". Имя этого файла должно быть указано в AndroidManifest (ищите в примере ниже слово foobarwallpaper )

Не потеряйте в описании Service-а permission , meta-data и intent-filter :

Как добавить

"Живые обои" прячутся, поэтом подсказка. Описываю, как это выглядит на моем Samsung.

Для начала long press где-нибудь на Home screen, телефон перейдет в режим настройки рабочих столов, появится иконка Wallpapers.

Нажимаем на иконку Wallpapers, несколько разделов, нам нужен My wallpapers, жмем надпись View all в правом верхнем углу раздела, открывается список во весь экран.

Жмем "три точки" вызова меню, в нем пункт LIve wallpapers (у меня он единственный), появляется список доступных "живых обоев".

Выбираем наши обои, и выбираем "Home and lock screen".

Появится "превью", которое уже отрисовывается нашим приложением (чтобы распознать этот момент, есть метод isPreview()), жмем Set as wallpaper… И ничего не видим, потому что возвращаемся в список доступных обоев.

Жмем "Home" и наслаждаемся.

Причем тут Android Watch?!

Интересное наблюдение по ходу, что Faces в Android Watch сделаны по точно такой же схеме (с точностью, что у них свои базовые классы со своей реализацией): такие же Service + Engine, почти те же метаданные и intent filter для Service в манифесте (в которых слово wallpaper встречается четыре раза:), также надо писать свой шедулер на основе Handler-а.

В базовых классах Watch Faces есть готовый onDraw() , куда передается Canvas, и есть invalidate() для его вызова. Но это не принципиальное различие, а реализованная часть бойлерплейта.

В отличие от Live Wallpaper, для Watch Faces есть примеры, в них можно покопаться (ссылки здесь, в самом начале).

Что получилось

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




Стикеры — это оставшаяся система обнаружения проблем предыдущего поколения.

Благодарности

Если бы не эти две статьи, я бы блуждал в потьмах намного дольше. Не представляю себе, как их можно было написать аж в 2010 году при таком качестве документации?!

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





Если вы любите новый плоский дизайн Google, то вам пригодится приложение Material Wallpapers. Оно позволяет генерировать случайные обои в зависимости от указанных вами слов. Одним из таких будет ваше имя, так как утилита попросит обязательно его ввести. Каждые созданные обои будут иметь какое-то отношение к вашему имени.


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


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


Данное приложение позволяет создавать обои на основе выбранных вами шаблонов. Выбор последних достаточно широк — стиль material design, текстуры, прозрачные формы и др. При этом в Wallpaper Generator вы можете полностью изменить выбранный шаблон, перемещать его, масштабировать, а также использовать различные эффекты для финального изображения.

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

Стандартные способы

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

screenshot_1

С домашнего экрана

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

screenshot_2

screenshot_3

screenshot_4

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

При помощи настроек телефона

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

screenshot_5

screenshot_6

screenshot_6

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

screenshot_7

screenshot_8

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

С помощью приложения CM Locker

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

  • Установите программу через Play Маркет.
  • Запустите CM Locker.

screenshot_10

screenshot_11

screenshot_12

screenshot_13

screenshot_14

Как и в случае со стандартными методами изменения заставки, изображение можно поставить как на заблокированный, так и на разблокированный экран в качестве фона.

DIY Locker

Еще одна неплохая программа, позволяющая изменить экран блокировки на Android. Она доступна для бесплатного скачивания через магазин приложений Google Play Маркет. После установки действует та же инструкция, которая была рассмотрена при описании CM Locker. То есть вам потребуется настроить DIY Locker в качестве средства защиты экрана, зарегистрировав пароль, а затем выбрать любое понравившееся изображение для фона.

screenshot_15

Echo Notification Lockscreen

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

screenshot_16

Go Locker

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

Принцип работы Go Locker не отличается от рассмотренных ранее программ, поэтому нет смысла подробно останавливаться на каждом шаге алгоритма. Загрузите приложение через Play Маркет и ознакомьтесь с предложенным списком обоев, чтобы выбрать оптимальный вариант.

screenshot_17

Zedge

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

Image to 3D Wallpaper 2.5. Скриншот 3
Image to 3D Wallpaper 2.5. Скриншот 4
Image to 3D Wallpaper 2.5. Скриншот 5
Image to 3D Wallpaper 2.5. Скриншот 6

Image to 3D Wallpaper – с помощью этого приложения вы всегда сможете вдохнуть в свои картинки вторую жизнь. Создайте свои обои с поразительным 3d эффектом. Качественные живые обои с 3d эффектом – это отличная возможность приукрасить ваш рабочий стол, да к тому-же сделать это своими руками. Работать с приложением проще некуда, просто открываем нужное нам изображение, добавляем ваши любимые обои с галереи и устанавливаем смену обоев. Ниже приведён список настраиваемых эффектов которые можно применить к любой картинке.

Разработка живых обоев для Android Приложение на Android, Android разработка, Видео, Длиннопост

Всех приветствую. Решился я наконец рассказть о своём маленьком проектике.

Все началось примерно в 2014 году, когда я приобрел себе HTC one X. Этот аппарат был идеальным для меня, и начиная с того момента я стал фанатом HTC. В этом аппарате были интересные живые обои в силе слайд-шоу, всё в них было хорошо, но были некоторые ньюансы, например нельзя запускать смену изображения ручками, например через двойной тап по экрану, а этого очень хотелось. Картинки перемещались не только в одну (рандомную) сторону - к примеру.

И вот захотелось мне найти замену, которая меня бы удовлетворяла больше. Перелопачивая всё, что было на плей-мараркете найти что-то стоящее не удавалось. То работает рывками, то весит дофига, то свайпов нет, то растягивает изображение. Нашлось только ОДНО приложение платное, которое более-менее выполняло то, что мне хотелось, но тут сыграл роль мой перфекционизм, который никак не давай покоя: Зачем делать экраны настроек, интерфейс приложения каким-то цветастым-пердястым, почему вообще приложение платное, ведь ничего сверх естественного оно не делает. И так было много мелких причин, которые вылились в "не нравится? - сделай сам!". Ок, попробуем.

Для себя я поставил несколько целей:

1. Минимализм в весе приложения, - ибо почему приложение весит >10Мб? Чего там такого?

2. Максимально простой интерфейс, максимально стандартный, без всяких свистелок перделок.

3. Обязательно использовать OpenGL 2.0 (ну и выше соответственно)! Только так можно добиться максимальной плавности и производительности.

4. Картинки прокручиваются влево-вправо и свайпом.

5. Двойной тап по экрану меняет изображение.

В процессе разработки удалось добиться всего что хотелось и даже больше:

1. Вес приложения 117кб. из них 70кб весит дефолтная картинка!

- - - Вот почему другие приложения весят в десятки раз больше - так и осталось загадкой.

2. Приложению ВООБЩЕ не нужны разрешения!

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

3. Можно выбрать как каталог из которого будут браться файлы, так и отдельно выбрать файл/файлы.

4. Удалось заставить воспроизводить видео-файлы!

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

И при этом откуда у них столько скачиваний? Ума не приложу.

Приложение сделал бесплатное, без реклам, без всякой чепухи. И бонусом открытый исходный код.

Читайте также: