Development for Android
20 October

OLED-экраны смартфонов на Андроиде и как с ними бороться

From Sandbox

Экран Google Pixel 4


Привет, Хабр!


Сегодня я коснусь весьма распространенной и, вообще говоря, довольно общеизвестной темы выгорания OLED-экранов. Несмотря на то, что эта тема актуальна уже достаточно давно, некоторые производители смартфонов продолжают делать неудачные дизайнерские решения, а пользователи продолжают предпринимать неверные, довольно разрушительные меры. Я бы хотел рассказать кратко о том, что такое OLED-экраны, почему они выгорают и как, собственно, быстрее и безболезненнее всего сгладить эту проблему (конечно же, без root-прав). Поехали!


OLED — что это и зачем


OLED в расшифровке означает Organic Light-Emitting Diode, и в основе своей использует люминисцентные свойства определенных органических составов, которые испускают свет при проведении через них электрического тока. По сути, каждый пиксель есть некий миниатюрный электрод, заполненный веществом, испускающим либо красный, либо зеленый, либо синий свет при подаче напряжения.


Ну и зачем это нужно?


У этой технологии есть конкретный перечень довольно значимых преимуществ перед своим основным конкурентом — LCD. Вкратце их можно перечислить примерно так:


  • Меньше потребляемой энергии: черный цвет означает, что на пиксель вовсе не подается напряжение;
  • Меньший размер конструкции, что позволяет засовывать в гаджет больше фишек;
  • Очень хорошее рассеивание света, что позволяет значительно расширить угол видимости;
  • Затрат на производство меньше: используемые люминисцентные вещества недороги в приобретении;
  • БОльшая насыщенность цветов;
  • И другие.

Выгорание экрана — как это происходит?


Конечно же, наш мир не идеален, и всё имеет свои достоинства и недостатки — и наш друг OLED в том числе. Помимо множества небольших проблем, таких как сильное отражение внешнего света на улице или большие (сравнительно с LCD, иногда до 3х раз) энергетические затраты на отображение белого цвета, существует очень ярко выраженный недочет, который заметили уже все, кому не лень. Это выгорание экрана.


Выгорание


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


Как же с этим бороться?


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


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


Если у вас, как у меня, жестко фиксированы некоторые элементы дисплея, такие как navbar (панель навигации) или status bar, а в настройках спасения нет, придется немного изловчиться. Мы, используя ADB (Android Debug Bridge), сделаем так, что панель навигации и/или статусбар будут появляться только в тех приложениях, в которых нам они нужны всегда. А там, где они нам редко нужны, они будут скрыты и появляться только при свайпе в соответствующей части экрана.


Использовать утилиту ADB нужно через консоль. Все будет работать и под виндой, только нужно сбросить adb.exe и все необходимые dll-ки в нужную папку. Далее, все показанные мной команды и действия будут совершаться под Linux (Ubuntu), но это чисто ради удобства, поскольку под виндой (или любым другим дистрибутивом линуха) эта утилита будет работать абсолютно так же.


Установка


  • Linux: открываем терминал и пишем:


    sudo apt install adb

    Pretty self-explanatory.


  • Windows:


    1. Скачиваем нужный архив
    2. Распаковываем его туда, куда удобно.
    3. Открываем папку и заходим в нее через командную строку.


Готово.


Немного первичных работ


Заходим в настройки своего смартфона и находим версию сборки (build number).


Build number location


Нажимаем на него несколько раз и получаем доступ к опциям разработчика.
Далее, нам необходимо включить отладку по USB:


Enable USB debugging


Теперь подсоединяем смартфон к компьютеру в режиме MTP (передачи файлов), и пишем в терминале:


adb devices

Теперь у вас на смартфоне должно появиться следующее сообщение:


Allow USB debugging?


Ставим галочку и нажимаем "Ок".
Снова пишем adb devices и получаем что-то такое:


Success


Ура! Мы готовы к действию! Конечно же, нет никакой необходимости проделывать всю эту работу более одного раза для одного компьютера. Вы можете в любой момент включить adb, подсоединить смарфтон и отдавать ему команды (только будьте, пожалуйста, осторожны!).


А теперь самое главное


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


adb shell pm list packages | grep vk

или так:


adb shell pm list packages vk

Получаем ответ:


package:com.vkontakte.android

Имя пакета — это то, что следует после 'package', то есть в нашем случае это 'com.vkontakte.android'.
Далее допустим, что мы хотим спрятать панель навигации везде, кроме вк. Сделать это можно так:


adb shell settings put global policy_control immersive.navigation=apps,-com.vkontakte.android

Готово! Изменения должны вступить в силу моментально.
Давайте же спрячем статус бар везде, кроме вк и YouTube.


adb shell settings put global policy_control immersive.status=apps,-com.vkontakte.android,-com.google.android.youtube

Ура! А теперь в приложении хабрахабра уберем и статусбар, и navbar, чтобы вмещать на экран еще больше классных статей.


adb shell settings put global policy_control immersive.full=ru.habrahabr


Вот и все! В любой момент изменения можно вернуть в дефолт, написав:


adb shell settings put global policy_control immersive.full=default

Заключение


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


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


P.S.


Буду рад любой обоснованной критике по форме и содержанию статьи.


+29
40k 73
Support the author
Comments 124