一个 Xposed 模块,用于防止 Android 在设备充电时自动禁用省电模式。
问题与解决方案
Android 的默认行为会在充电时禁用省电模式。此模块会拦截 Android 系统服务器 ( 包) 中的特定系统调用,以防止这种自动停用,从而允许 Battery Saver 即使在接通电源时也能保持活动状态。android
技术概述
该模块在 :com.android.server.power.batterysaver.BatterySaverStateMachine
enableBatterySaverLocked
(所有变体):- 使用 .
XposedBridge.hookAllMethods
- 回调会检查配置的选项,并可以阻止原始方法的执行 ():
beforeHookedMethod
param.setResult(null)
lock_on_plugged_in
:检查方法参数是否包含 (“Plugged in”)。REASON_STRING_PLUGGED_IN
lock_on_power
:使用反射检查实例中字段的当前状态。mIsPowered
BatterySaverStateMachine
lock_any
:无条件阻止方法调用。
- 使用 .
updateStateLock
的- 使用 .
XposedBridge.hookAllMethods
- 回调修改内部状态:
beforeHookedMethod
fake_power
:如果启用,则使用反射将实例的字段设置为原始方法运行之前,从而有效地将充电状态隐藏在状态机的内部逻辑中。mIsPowered
BatterySaverStateMachine
false
- 使用 .
注意:此模块依赖于 AOSP 中的特定类/方法名称和字段名称。OEM 或未来 Android 版本的重大更改可能会影响功能。mIsPowered
未来的想法(也许吧!
我有一些关于未来增强的想法,但不能保证这些:
设置 UI:添加一个简单的配置 UI 以切换模块的功能,或者稍后可能添加更多选项。- UI 解锁:挂接 Battery Saver 设置页面和 Quick Settings 磁贴,以防止它们在设备充电时被禁用或灰显,并且此模块会强制开启 Battery Saver。
- 将支持扩展到 Android 5.0 (Lollipop):自 API 级别 21 以来,Android 中似乎就存在省电模式,因此支持较旧的设备可能是可行的。这需要调查与这些版本中的类或等效项的兼容性。
BatterySaverStateMachine
故障排除/兼容性
- 功能取决于 AOSP 类/方法/字段名称(、 )。繁重的 OEM 定制或将来的 Android 更改可能会让您陷入困境。
BatterySaverStateMachine
enableBatterySaverLocked
updateStateLocked
mIsPowered
- 与其他电源管理 Xposed 模块发生冲突是可能的,但考虑到特定目标的可能性较小。
- 如果 Battery Saver 仍然关闭,请仔细检查模块激活、范围 () 或 (),然后重新启动。检查 Xposed 日志中是否存在与 相关的错误。
Android System
System Framework
AlwaysBatterySaver
- 在 Issues (问题) 页面上报告日志问题。
版本类型: 稳定
2025/4/22 15:18:39
此更新包括对模块工作方式的重大改进,提供更可靠的节电模式控制,并引入了新选项。
变化:
- 更高的可靠性:阻止 Battery Saver 关闭的核心逻辑已被完全重写。这应该会提高不同设备和 Android 版本之间的兼容性。
- 新的控制选项:
- 防止在电源上禁用:添加了一项新设置,可阻止 Battery Saver 仅在设备接通电源并检测到正在充电时自动关闭。
- 隐藏充电状态:这个新选项取代了旧的“Block update charge state”。它的工作原理是防止系统告诉 Battery Saver 组件您的设备正在充电。这是帮助在接通电源时保持节电模式处于活动状态的另一种方法。
- “锁定省电模式状态”已更新:主动阻止对 Battery Saver 状态的任何更改的实验性选项已在内部更新。
- 视觉调整:添加了对深色模式的基本支持,并对设置屏幕布局进行了细微调整。
次要改进:
- 在调试版本中,即使主的“Enable Module”开关处于关闭状态,设置选项仍将保持可选状态。
我们在后台进行了重大更改,因此请尝试新选项并报告您发现的任何问题!
LSP中文网版权所有,原文地址https://lsposed.cn/994
© 版权声明
文章版权归作者所有,未经允许请勿转载。
哔哩哔哩 : 点击关注
哔哩哔哩 : 点击关注
THE END
请登录后查看评论内容