我知道这个问题已被问过很多次,但从来没有得到令人满意的回答.
我的问题如下:
我有一项活动可以阻止屏幕在预定义的时间内关闭.
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
似乎无法关闭屏幕并仅通过触摸显示屏重新激活.
我现在的新方法:
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)
也许这可以帮助将来遇到类似问题的人.
| 归档时间: |
|
| 查看次数: |
17047 次 |
| 最近记录: |