如何以编程方式禁用“省电”模式。 (安卓)

Posted

技术标签:

【中文标题】如何以编程方式禁用“省电”模式。 (安卓)【英文标题】:How to disable "Power saving" mode programmatically. (Android) 【发布时间】:2013-02-28 10:33:00 【问题描述】:

目前我正在尝试通过使用 OpenGL ESandroid 设备开发一个 2D 游戏,但 Android OS 让它尽可能地痛苦。

通过消耗它可以消耗的所有电池,它看起来非常以 60FPS 平稳运行。然后我突然意识到了这一点。启用“省电”模式(Galaxy S III等)会导致FPS降至40

所以我决定提高游戏速度并将计时器限制为 40FPS,这样就可以流畅地玩 40FPS。

还有另一个问题。这一次 移动的对象会随机闪烁,即使最大值设置为 30 并且计算/绘图在同一个线程上。当“省电”被禁用(从设备菜单中禁用)时,它会继续平稳运行。

简而言之,“省电”模式会通过随机降低 OpenGL ES 函数的速度来降低应用程序的速度,即使将 FPS 降至 40 并不是必需的。 (有时一个函数需要 2-3ms 执行,需要 13-14ms 其他的都运行正常)

我想知道是否有办法在代码中禁用“省电”模式并在退出时重新启用它。

PS:为了让屏幕保持开启,我正在使用下一行:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

final PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
this.mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "DoNotDimScreen");
    this.mWakeLock.acquire();

【问题讨论】:

40 fps 就足够了。并且您可以为用户添加一条警告,建议停用省电模式(或者甚至阻止访问游戏,除非禁用省电模式)。这样,您就不会耗尽不知情用户的电池电量。 好吧 40 fps 是可以接受的,但我无法检测是否启用了省电。所以我可能会检查 FPS 以进行检测,但我认为在应用程序运行时禁用 PSave 会比强制用户这样做更好。 【参考方案1】:

也许这对你有帮助:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

【讨论】:

以上是关于如何以编程方式禁用“省电”模式。 (安卓)的主要内容,如果未能解决你的问题,请参考以下文章

Android中的省电模式以编程方式控制?

如何以编程方式禁用 Apple Watch 的睡眠模式

如何在 iOS 中以编程方式禁用/启用睡眠模式?

如何通过禁用兼容模式以编程方式启动 EXE?

如何以编程方式启用和禁用振动模式

如何以编程方式为特定视图控制器禁用/启用睡眠模式?