2012-08-31 81 views
1

我正在嘗試向用戶顯示一個烤麪包,並在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); 

     } 
    }; 
+2

是你的設備[在自動亮度](http://stackoverflow.com/questions/4611287/changing-screen-brightness-on-a-htc-sense-device)?另外,在亮度變化後添加烤麪包 - 是否顯示? – Eric

+0

編號 我在setAttributes(lp)之後添加日誌,並在logcat上正確顯示。 –

+0

我也嘗試了吐司,它也被顯示。 –

回答

0

你得到你的清單正確的權限?

你應該有這樣的:

<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

+0

我的代碼幾乎與u貼的鏈接相同,我想知道爲什麼你需要設置android.provider。 –

+0

你是否嘗試從UI線程而不是其他線程運行? – Matthieu

+0

我認爲它在UI線程上運行,因爲我可以在getwindow()。setattribute()之後做一個敬酒。 –