Android - 关闭屏幕而不进入待机模式

Sig*_*ggy 11 android screen

我知道这个问题已被问过很多次,但从来没有得到令人满意的回答.

我的问题如下:

我有一项活动可以阻止屏幕在预定义的时间内关闭.

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
Run Code Online (Sandbox Code Playgroud)

当预定时间结束时,我会显示一个倒计时对话框,告知用户如果没有按"取消",显示屏将在10秒后关闭.

我设法关闭了显示屏,但手机总是切换到StandBy模式.

为了关闭我使用:

Window mywindow = getWindow();

WindowManager.LayoutParams lp = mywindow.getAttributes();

lp.screenBrightness = 0.0f;

mywindow.setAttributes(lp);
Run Code Online (Sandbox Code Playgroud)

是否有可能在不进入StandBy-Mode(暂停活动)的情况下使显示器完全变暗.

我的目标是用户应该只需点击显示屏再次照亮屏幕.因此活动必须保持活跃状态​​.

这里也提出类似的问题.

由于这个问题差不多已经有一年了,我希望有人可能会在同一时间内完成这个问题.

很多问候

Siggy

Sig*_*ggy 8

似乎无法关闭屏幕并仅通过触摸显示屏重新激活.

我现在的新方法:

private WakeLock screenWakeLock;

PowerManager pm = PowerManager.getSystemService(Context.POWER_SERVICE);
screenWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
                                "screenWakeLock");
screenWakeLock.acquire();
Run Code Online (Sandbox Code Playgroud)

PARTIAL_WAKE_LOCK使CPU保持运行但允许显示关闭.

当按下电源或主页按钮时,显示屏再次打开,活动再次可见(无需"滑动解锁"或其他).

别忘了发布screenWakeLock.

就我而言,我onResume()在活动中做到了:

if (screenWakeLock != null) {
   if(screenWakeLock.isHeld())
      screenWakeLock.release();
   screenWakeLock = null;
}
Run Code Online (Sandbox Code Playgroud)

也许这可以帮助将来遇到类似问题的人.