【问题标题】:Not able to dim screen properly无法正确调暗屏幕
【发布时间】:2012-08-31 12:58:17
【问题描述】:

我正在尝试向用户显示祝酒词,并在 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);  

        }
    };

【问题讨论】:

  • 你的设备是on auto brightness吗?另外,在亮度变化后加个吐司——它会显示吗?
  • 没有。我在 setAttributes(lp) 之后添加了日志,它在 logcat 上正确显示。
  • 我也试过吐司,它也显示出来了。
  • 为什么是 0.01f?为什么不是0? developer.android.com/reference/android/view/…
  • 0 会使屏幕完全变暗,当用户尝试重新打开设备时会出现锁定屏幕

标签: android


【解决方案1】:

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

你应该有这个:

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

如果还是不行,你可能想使用这样的代码:

android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS, SysBackLightValue);

见:http://android-er.blogspot.tw/2011/02/change-system-screen-brightness-using.html

另外,我不确定您能否在 UI 线程之外执行此操作...如果这最终成为问题,您可以使用 runOnUiThread

【讨论】:

  • 我的代码与你发布的链接几乎相同,我想知道为什么你需要设置 android.provider。
  • 您是否尝试从 UI 线程而不是其他线程运行?
  • 我认为它在 UI 线程上运行,因为我可以在 getwindow().setattribute() 之后敬酒。
  • 如果您复制代码以在您已经拥有的 toast 之后使屏幕变暗,而不是发布到处理程序(它应该立即使屏幕变暗)。这行得通吗?
  • 我试图在我的活动中的每一个地方调用这 3 行,似乎我的活动对它们根本没有响应......我试图调用 getWindow().addFlags(WindowManager.LayoutParams .FLAG_KEEP_SCREEN_ON);以及我的活动也没有响应......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
  • 2016-07-22
  • 1970-01-01
相关资源
最近更新 更多