在Android 4.2.2中将screenBrightness属性设置为0.0f不再关闭屏幕?

时间:2013-06-08 04:19:51

标签: android android-windowmanager screen-brightness

以下是相关代码:

 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 个答案:

答案 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