以下是相关代码:
WindowManager.LayoutParams windowParams = getWindow().getAttributes();
windowParams.flags |= LayoutParams.FLAG_KEEP_SCREEN_ON;
windowParams.screenBrightness = 0.0f;
getWindow().setAttributes(windowParams);
我也尝试将screenBrightness设置为0(整数而不是浮点数),以及我在Stack Overflow答案中找到的以下行:
this.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
没有骰子。屏幕变暗,但不会关闭。以上代码适用于以前的Android版本。我只是在模拟器中测试它以确保。是否实施了一种控制屏幕的新方法?
答案 0 :(得分:0)
请调用以下两个功能来关闭屏幕,因为代码不一致。
来自文档:
public void goToSleep (long time)
在API级别1中添加 强制设备进入睡眠状态。
覆盖保留的所有唤醒锁定。这是按下电源键关闭屏幕时发生的情况。 需要DEVICE_POWER权限。
public void wakeUp (long time)
在API级别17中添加 强制设备从睡眠中醒来。
如果设备当前处于睡眠状态,则将其唤醒,否则不执行任何操作。当按下电源键打开屏幕时会发生这种情况。
需要DEVICE_POWER权限。
答案 1 :(得分:0)
我不确定你为什么做的不行。这是一个肮脏的黑客,但也许你可以将屏幕超时更改为一个非常低的时间。
android.provider.Settings.System.putInt(getContentResolver(),
Settings.System.SCREEN_OFF_TIMEOUT, time);
说time=300
,即300毫秒。
答案 2 :(得分:0)
我不知道你在这里想要完成什么,但是对于像唤醒/睡眠一样的屏幕控制,你应该看看PowerManager类,简单易用:http://developer.android.com/reference/android/os/PowerManager.html < / p>
这是如何使用它的一个例子:
protected void setScreenLock(boolean on){
if(mWakeLock == null){
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK |
PowerManager.ON_AFTER_RELEASE, TAG);
}
if(on){
mWakeLock.acquire();
}else{
if(mWakeLock.isHeld()){
mWakeLock.release();
}
mWakeLock = null;
}
}
问候!
答案 3 :(得分:0)
根据我的发现,在较新版本的Android中不再可靠地关闭屏幕。唯一可行的解决方案是需要DEVICE_POWER权限的解决方案,即restricted permission。