6

以下是相关代码:

 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 版本中工作。我只是在模拟器中对其进行了测试以确保。是否实施了一种新方法来控制屏幕?

4

4 回答 4

0

由于您的代码不一致,请调用以下两个函数来关闭屏幕。

从文档:

 public void goToSleep (long time)

在 API 级别 1 中添加 强制设备进入睡眠状态。

覆盖所有持有的唤醒锁。这是按下电源键关闭屏幕时发生的情况。需要 DEVICE_POWER 权限。

 public void wakeUp (long time)

在 API 级别 17 中添加 强制设备从睡眠中唤醒。

如果设备当前处于睡眠状态,则将其唤醒,否则不执行任何操作。这是按下电源键打开屏幕时发生的情况。

需要 DEVICE_POWER 权限。

于 2013-06-08T05:49:34.833 回答
0

我不确定为什么你正在做的事情不起作用。这是一个肮脏的黑客,但也许您可以将屏幕超时更改为非常短的时间。

android.provider.Settings.System.putInt(getContentResolver(),
        Settings.System.SCREEN_OFF_TIMEOUT, time);

time=300哪个是 300 毫秒。

于 2013-06-27T17:21:39.187 回答
0

我不知道你在这里想要完成什么,但是对于像唤醒/睡眠这样的屏幕控制,你应该看看 PowerManager 类,它简单易用:http: //developer.android.com /reference/android/os/PowerManager.html

这是如何使用它的示例:

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;
    }

}

问候!

于 2013-07-01T18:25:21.013 回答
0

根据我的发现,在较新版本的 Android 中不再可能可靠地关闭屏幕。唯一可行的解​​决方案是需要 DEVICE_POWER 权限的解决方案,这是一个受限权限

于 2014-07-01T19:39:21.353 回答