Android 无法正确调暗屏幕

Android 无法正确调暗屏幕,android,Android,我试图向用户敬酒,并在5秒后将屏幕调暗至最低亮度。但屏幕一点也不暗。我的密码有错吗?请帮忙 代码: private void DimScreen() { Toast.makeText(StartActivity.this, "Dimming screen in 5 seconds, press Stop button to turn on the screen", Toast.LENGTH_SHORT).show(); handler.po

我试图向用户敬酒,并在5秒后将屏幕调暗至最低亮度。但屏幕一点也不暗。我的密码有错吗?请帮忙

代码:

private void DimScreen()
    {
            Toast.makeText(StartActivity.this, "Dimming screen in 5 seconds, press Stop button to turn on the screen", Toast.LENGTH_SHORT).show();
            handler.postDelayed(r, 5000);
    }

private Handler handler= new Handler();
    private Runnable r = new Runnable()
    {
        public void run()
        {
            WindowManager.LayoutParams lp = getWindow().getAttributes();
            lp.screenBrightness=0.01f;
            getWindow().setAttributes(lp);  

        }
    };

您是否在清单中获得了正确的权限

你应该有这个:

<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
见:


另外,我不确定您是否能够在UI线程之外做到这一点。。。如果最终出现问题,您可以使用

是您的设备吗?另外,在亮度更改后添加一个toast,它是否显示?否。我在setAttributes(lp)之后添加了日志,它在logcat上正确显示。我也尝试了toast,它也显示了。为什么是0.01f?为什么不是0?0将使屏幕完全变暗,并且当用户尝试重新打开设备时会出现锁定屏幕。我的代码与发布的链接u几乎相同,我想知道为什么您需要设置android.provider。您是否尝试从UI线程而不是其他线程运行?我认为它正在UI线程上运行,因为我可以在getwindow()之后执行toast。setattribute()操作。如果您复制代码使屏幕变暗,而不是发布到处理程序(它应该立即使屏幕变暗),则会发生什么。这行吗?我试着在活动中的每一个地方调用这3行,似乎我的活动根本没有响应它们……我试着调用getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_on);我的活动也没有反应。。。
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, SysBackLightValue);