注意:以下解决方案要求您的Android植根。
我相信没有根的自动化不会直接解决这个问题,因为它不会更改或覆盖任何内容,而是对现有更改进行自己的处理。我打算在类似的帖子上发帖,直到我意识到解决方案的关键是一个名为max_brightness
的文件,位于下的文件/sys
,因此是Linux内核的一部分,并由它直接管理。我发现在该文件中设置亮度限制是最好的方法。您可能不同意更好的解决方案。
我注意到,一旦设置了自定义的最大亮度,除非Android和应用程序更改了文件的内容,否则Android和应用程序都无法将亮度设置为该自定义级别以上,这通常是应用程序没有理由更改并且它们都不更改。此外,该文件由root拥有,并且是组root的一部分,因此任何应用程序甚至system_server都需要root特权才能对该文件进行更改。
查找该文件有些棘手。在装有Android 4.2的MTK设备中,该文件似乎位于下/sys/devices/platform/leds-mt65xx/leds/lcd-backlight/
。
在装有Android 5.0.2及更高版本的Qualcomm设备中,该文件似乎位于中/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/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 / devices / 01-qcom,leds-d300 / leds / led:flash_torch / max_brightness
/ sys / devices / 01-qcom,leds-d300 / leds / led:flash_0 / max_brightness
/ sys / devices / 01-qcom,leds-d300 / leds / led:flash_1 / max_brightness
/ sys / devices / 01-qcom,leds-e200 / leds / kpdbl-lut-2 / max_brightness
/ sys / devices / 01-qcom,leds-e200 / leds / kpdbl-pwm-3 / max_brightness
/ sys / devices / 01-qcom,leds-e200 / leds / kpdbl-pwm-4 / max_brightness
/ sys / devices / 01-qcom,leds-e200 / leds / button-backlight / 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
- 检查使用根
在MacroDroid中,设置您喜欢的触发器,然后进行动作安装“ 安全设置”,选择它→动作→运行命令:
- 命令:
echo LIMIT > PATH_TO_MAX_BRIGHTNESS
- 检查使用根
在流程中,作为流程的一部分,在“ 自动化”中,为触发器设置操作时,在“应用程序”下选择“ Shell命令超级用户”,然后执行以下操作:
- 命令行:
echo LIMIT > PATH_TO_MAX_BRIGHTNESS
确保安装流程需要的所有权限。
在DroidAutomation中,设置触发器,然后在任务下,选择Root→执行命令行,然后键入:echo LIMIT > PATH_TO_MAX_BRIGHTNESS
如您所料,您必须为每个应用程序设置两个配置文件。一种设置极限,另一种将最大亮度设置为您习惯的默认值。
电池电量低的显式触发器:
我想让您考虑 这一点,即使用低电量或100%电池触发器会破坏此答案的目的,即覆盖Android想要进行的更改。例如,如果每当电池电量达到100%时都将LIMIT设置为0,那么您的Android将会照常将屏幕照亮至最大值,并且在数毫秒(您正确阅读)中,自动化应用就会运行并设置极限。在几毫秒内您的睡眠可能会中断。
在另一种情况下,当系统发出电池电量不足的消息时,Cool Guy的平板电脑可能会以最大亮起的屏幕显示屏幕,而在几毫秒内,亮度会回落到LIMIT。
解决方法是将电池电量低触发设置为16或更高,将电池充满电设置为99或更低。