Как предотвратить яркость, когда батарея достигает высокого уровня?

Я оставляю свой телефон (Samsung Galaxy 4 GT-I9506, Android 5.0.1 Lollipop) заряжающимся на столе перед сном. Он достигает полного через несколько часов часто. Это так раздражает, когда дисплей становится ярким после полного заряда батареи, что будит меня.

Я знаю тему. Как предотвратить полную яркость при появлении всплывающего окна с низким уровнем заряда батареи? о предотвращении яркого дисплея при низком заряде батареи. Корневое устройство кажется единственным вариантом для изменения поведения по умолчанию. Я несколько раз безуспешно устанавливал CyanogenMod на устройство. Я открыт для других способов получить root права на это устройство и изменить его поведение по умолчанию.

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

Установил предложенный Firelord, Tasker, где работаю автоматику. Мне, вероятно, нужно рутировать мой телефон для достаточного изменения.


Как вы можете предотвратить яркость, когда батарея полностью заряжена в Android?

Я не могу сказать, будет ли это работать, но в Tasker вы можете настроить профиль для уменьшения яркости в момент полной зарядки аккумулятора. Профиль: Событие -> Мощность -> Батарея заряжена -> Максимум. Действие: Дисплей -> Яркость дисплея. Используйте это в контексте времени, чтобы это происходило только во время сна. Этого можно добиться и с помощью MacroDroid.

Ответы (2)

Вы можете приблизиться, но не можете предотвратить такое поведение, если нет неизвестных вам настроек или устройство не имеет root-прав. Независимо от того, какое приложение вы используете, яркость будет установлена ​​на максимум всякий раз, когда уровень заряда батареи достигнет 100%, и в течение нескольких миллисекунд она вернется к тому, что вы хотите. Мое решение решает эту проблему. Первоначально опубликовано здесь .

Файл с именем max_brightness, файл под именем , /sysследовательно, является частью ядра Linux и непосредственно управляется им, по-видимому, является ключом к решению. Я обнаружил, что установка предела яркости в этом файле — один из лучших способов решить эту проблему.

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

Найти этот файл немного сложно. На моем устройстве MTK с Android 4.2 этот файл находится под расширением /sys/devices/platform/leds-mt65xx/leds/lcd-backlight/.

На моем устройстве Qualcomm с Android 5.0.2 и выше файл оказался в формате /sys/devices/mdp.0/qcom,mdss_fb_primary.168/leds/lcd-backlight/.

Я предполагаю, что лучший способ найти этот файл — запустить поисковый запрос (настройте для этого ), например:

(Требуется Busybox )

adb shell su -c 'find /sys/ -type f -iname "max_brightness"'

В моем устройстве Qualcomm вывод, который он дает:

/sys/devices/f9924000.i2c/i2c-2/2-0068/светодиоды/красный/max_brightness
/sys/devices/f9924000.i2c/i2c-2/2-0068/светодиоды/синий/max_brightness
/sys/devices/f9924000.i2c/i2c-2/2-0068/светодиоды/зеленый/max_brightness
/sys/devices/mdp.0/qcom,mdss_fb_primary.168/светодиоды/ЖК-подсветка /max_brightness
/sys/devices/qcom, камера-светодиодная-вспышка.81/светодиоды/фонарик/max_brightness
/sys/устройства/msm_sdcc.1/светодиоды/mmc0::/max_brightness
/sys/устройства/msm_sdcc.2/светодиоды/mmc1::/max_brightness
/sys/devices/01-qcom, светодиоды-d300/светодиоды/светодиоды:flash_torch/max_brightness
/sys/devices/01-qcom, светодиоды-d300/светодиоды/светодиоды: flash_0/max_brightness
/sys/devices/01-qcom, светодиоды-d300/светодиоды/светодиоды: flash_1/max_brightness
/sys/devices/01-qcom, светодиоды-e200/светодиоды/kpdbl-lut-2/max_brightness
/sys/devices/01-qcom, светодиоды-e200/светодиоды/kpdbl-pwm-3/max_brightness
/sys/devices/01-qcom, светодиоды-e200/светодиоды/kpdbl-pwm-4/max_brightness
/sys/devices/01-qcom, светодиоды-e200/светодиоды/подсветка кнопок/max_brightness

Место, где lcd-backlightупоминается, было единственным, которое имело для меня смысл, и именно так я нашел файл на своем устройстве. Не беспокойтесь, спрашивая о других. Я попытался изменить яркость экрана и искал изменения в названном файле brightness(также расположенном в указанных местах). Ни один из них не отражал правильный вывод, кроме того, что в /sys/devices/mdp.0/qcom,mdss_fb_primary.168/leds/lcd-backlight.

Только для демонстрации, попробуйте установить ограничение вmax_brightness

adb shell su -c 'echo LIMIT > PATH_TO_MAX_BRIGHTNESS'   # in my case PATH_TO_MAX_BRIGHTNESS is /sys/devices/mdp.0/qcom,mdss_fb_primary.168/leds/lcd-backlight/ and set LIMIT to a value less than 30 (not limited to). 

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

Обратите внимание , что максимальное значение max_brightness часто оказывается равным 255, а яркость находится в диапазоне от 0 до 255. Часто, не всегда правда, т.е. И не бойтесь установить ограничение на 0. Это приведет к тому, что экран не загорится, пока вы не отмените изменения или не перезапустите устройство.

Найдите предел, который не мешал бы вам во сне.


Автоматизация

Для используйте любое приложение автоматизации, которое может запускать команду с привилегиями root и при соблюдении контекста предпочитаемого вами триггера. Я рекомендую триггер на основе времени.

Некоторые рабочие примеры:

  • В Tasker настройте профиль с предпочитаемым контекстом, создайте задачу и используйте действие: Код → Запустить оболочку:

    • Команда:echo LIMIT > PATH_TO_MAX_BRIGHTNESS
    • отметьте Использовать рут
  • В MacroDroid настройте предпочитаемый триггер и для действия установите Secure Settings , выберите его → Действия → Выполнить команду:

    • Команда:echo LIMIT > PATH_TO_MAX_BRIGHTNESS
    • отметьте Использовать рут
  • В Automate , как часть вашего потока, при настройке действия для вашего триггера выберите команду Shell superuser в разделе «Приложения» и выполните:

    • Командная строка:echo LIMIT > PATH_TO_MAX_BRIGHTNESS


    Обязательно установите все разрешения, необходимые для потока.

  • В DroidAutomation настройте свой триггер и под задачей выберите Root → Выполнить командную строку и введите:echo LIMIT > PATH_TO_MAX_BRIGHTNESS

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


Я хотел бы, чтобы вы учитывали это (даже если вы получили намек в начале), что использование триггера 100% батареи помешает цели этого ответа, которая состоит в том, чтобы отменить изменения, которые Android хочет внести. Например, если вы устанавливаете LIMIT на 0 всякий раз, когда батарея достигает 100%, что произойдет, если ваш Android будет освещать экран до максимума, как обычно, и через несколько миллисекунд (вы правильно прочитали) ваше приложение автоматизации запустится и установит предел. Ваш сон может быть прерван в эти миллисекунды.

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

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

Как предложил @Firelord, вы можете попробовать использовать Tasker или MacroDroid.

Автоматизация является предпочтительным вариантом, или, скорее, единственным вариантом в данном случае. Доступно множество приложений. Я предпочитаю использовать MacroDroid , так как он бесплатный (до 5 макросов) и прост в освоении. Чтобы понять, как работает MacroDroid и какие настройки необходимы для вашей версии Android, см. мой ответ

Примечание . Это не тестировалось на Lollipop, как на KitKat, но должно работать. Убедитесь, что установлены соответствующие настройки для леденца.

Ваш макрос будет выглядеть так

Триггер :

Уровень заряда батареиувеличивается до → (выберите желаемый процент на скользящей шкале или 100 %)

Действия :

  • Яркость0 ( выберите «По скользящей шкале» — не требует рута )
  • Подождать до следующего действия → установить на 10 секунд (рекомендуется разделить предыдущие и следующие действия, чтобы оба произошли)
  • Dim ScreenDimmer On → 10% ( выберите «По скользящей шкале» — не требует рута, если предыдущее действие недостаточно для вас — это сродни приложениям «экранного фильтра», таким как Darker )

Ограничения :

Время сутокВремя начала 22:00 → Время окончания 06:00 (при условии, что это время вашего сна)

Удалось протестировать, пожалуйста?
При использовании этого подхода есть яркость на несколько миллисекунд. Подход Firelord не гарантирует такой яркости.
Собственно, я пытаюсь найти такую ​​функцию у CyanogenMod 12.1 с настройками по умолчанию. Это гораздо более настраиваемый, но я еще не удалось. Я дам вам знать, если у меня получится.
Я все равно опубликовал .. Может кому-то понравится