Примечание: решение ниже требует, чтобы ваш Android был рутирован.
Я считаю, что автоматизация без рута не решит проблему напрямую, так как она ничего не меняет и не переопределяет, а делает свои собственные вещи над существующими изменениями. Я собирался публиковать аналогичные строки, пока не понял, что ключом к решению является файл с именем 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/
.
Я предполагаю, что лучший способ найти этот файл - запустить поисковый запрос (настройка ADB для этого), таких как:
(Требуется busybox )
adb shell su -c 'find /sys/ -type f -iname "max_brightness"'
В моем устройстве Qualcomm вывод:
/sys/devices/f9924000.i2c/i2c-2/2-0068/leds/red/max_brightness
/sys/devices/f9924000.i2c/i2c-2/2-0068/leds/blue/max_brightness
/sys/devices/f9924000.i2c/i2c-2/2-0068/leds/green/max_brightness
/sys/devices/mdp.0/qcom,mdss_fb_primary.168/leds/lcd-backlight / max_brightness
/sys/devices/qcom,camera-led-flash.81/leds/torch-light/max_brightness
/sys/devices/msm_sdcc.1/leds/mmc0::/max_brightness
/sys/devices/msm_sdcc.2/leds/mmc1::/max_brightness
/ SYS / устройства / 01-QCOM, светодиоды-D300 / СИД / водить: flash_torch / max_brightness
/ SYS / устройства / 01-QCOM, светодиоды-D300 / СИД / водить: flash_0 / max_brightness
/ SYS / устройства / 01-QCOM, светодиоды-D300 / СИД / водить: flash_1 / max_brightness
/ системы / устройства / 01-QCOM, светодиоды-E200 / СИД / kpdbl-LUT-2 / max_brightness
/ системы / устройства / 01-QCOM, светодиоды-E200 / СИД / kpdbl-3-ШИМ / max_brightness
/ системы / устройства / 01-QCOM, светодиоды-E200 / СИД / kpdbl-4-ШИМ / max_brightness
/ SYS / устройство / 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 настройте профиль с предпочтительным контекстом, создайте задачу и используйте действие: Код → Запустить Shell:
- Команда:
echo LIMIT > PATH_TO_MAX_BRIGHTNESS
- проверьте использование Root
В MacroDroid установите предпочитаемый триггер и для действия установите Безопасные настройки , выберите его → Действия → Выполнить команду:
- Команда:
echo LIMIT > PATH_TO_MAX_BRIGHTNESS
- проверьте использование Root
В разделе «Автоматизация» при настройке действия для триггера выберите « Команда суперпользователя» в разделе «Приложения» и выполните:
- Командная строка:
echo LIMIT > PATH_TO_MAX_BRIGHTNESS
Убедитесь, что установлены все разрешения, необходимые для потока.
В DroidAutomation настройте триггер и в разделе задач выберите Root → Выполнить командную строку и введите:echo LIMIT > PATH_TO_MAX_BRIGHTNESS
Как вы уже догадались, вам придется настроить два профиля для каждого приложения. Один для установки предела, а другой для установки максимальной яркости по умолчанию, к которому вы привыкли.
Явные триггеры низкого заряда батареи:
Tasker
- Состояние → Уровень заряда батареи → установить диапазон
- Альтернатива: Событие → Система → Назначение получено → Оставьте все без изменений, но установите Действие в
android.intent.action.BATTERY_LOW
.
MacroDroid
Следуйте beeshayms' ответ для настройки триггера
Автоматизировать
Перейдите в Приложения → Вещательный прием → оставьте все без изменений, но выберите Батарея разряжена в действии
Droid Automation
Выберите низкий уровень заряда батареи от Добавить триггер
Я хотел бы, чтобы вы учитывали, что использование триггера с низким уровнем заряда батареи или 100% заряда батареи лишило бы смысла этот ответ, который заключается в отмене изменений, которые Android хочет внести. Например, если вы установите LIMIT в 0, когда батарея достигнет 100%, то произойдет, если ваш Android будет светить до максимума, как обычно, и через несколько миллисекунд (вы правильно прочитали) ваше приложение автоматизации будет работать и установить предел. Ваш сон может быть прерван в эти миллисекунды.
В другой ситуации, когда система сообщает о низком заряде батареи, на планшете Cool Guy может загореться максимум экрана, а через несколько миллисекунд яркость снова упадет до LIMIT.
Обходной путь должен установить уровень заряда батареи до 16 или больше для триггера низкого уровня заряда батареи и 99 или меньше для полного заряда батареи.