2011-05-27 81 views
4

任何知道爲什麼此代碼不會降低我的應用程序背光的人?Android短屏亮度代碼!

Context context = this; 

    Settings.System.putInt(context.getContentResolver(), 
    Settings.System.SCREEN_BRIGHTNESS, 255); 
+0

可能重複(http://stackoverflow.com/questions/5032588/cant-apply-screen-brightness-settings-programmatically-in-android) – EboMike 2011-05-27 23:41:57

回答

11

應用不再允許修改整體亮度。不要使用人們試圖在各個方面提出的技巧,這些技巧使用私有API,並將以各種方式在不同設備上破解(並且被認爲是在更新版本的平臺上關閉的安全漏洞)。

官方API設置亮度與WindowManager.LayoutParams.screenBrightness,它可以讓你設置自己的應用程序窗口的亮度。當用戶移入和移出應用程序時,平臺會自動處理更改亮度。

使用此選項可以更改它:

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = <some value between 0 and 1>; 
getWindow().setAttributes(lp); 
+6

以防萬一這對其他人有用:您可以通過在上面的代碼中設置'lp.screenBrightness = -1;'將亮度設置爲自動。 – Chris 2011-09-25 22:59:15

+1

不幸的是,在很多設備上,如果用戶設置了「自動亮度」,那麼更改窗口的屏幕亮度不起作用。在這種情況下,您需要禁用「自動亮度」設置才能使screenBrightness發揮作用。 – 2013-02-19 18:07:33

1

遵循這個代碼,我想我已經把一個評論對你以前的問題有關:)

參考那朵tuto

4

如果你想改變你的當前應用程序的亮度,使用代碼hackbod發佈

WindowManager.LayoutParams lp = getWindow().getAttributes(); 
lp.screenBrightness = <some value between 0 and 1>; 
getWindow().setAttributes(lp); 

但我不能完全hackbod的帖子同意。絕對有可能在不使用黑客的情況下改變全局亮度。我只寫了一個簡短的演示應用程序。

訣竅是,首先應該改變應用程序的亮度,然後改變全局亮度。否則,只有設置菜單中的「亮度滑塊」改變其位置,但這不會影響亮度。只有當用戶點擊滑塊時,纔會應用亮度。

WindowManager.LayoutParams localLayoutParams = getWindow() 
      .getAttributes(); 
    localLayoutParams.screenBrightness = 0.12F; 
    getWindow().setAttributes(localLayoutParams); 

    Settings.System.putInt(this.resolver, "screen_brightness", 30); 

應用亮度範圍從0 - 1 全球亮度範圍從0 - 255(0 =顯示關閉)

而且是非常重要的要等待一段時間才能應用這些設置,如果你想退出之後。

Thread t = new Thread(new Runnable() { 
       public void run() { 
        try { 
         Thread.sleep(500); 
        } catch (InterruptedException e) { 
         System.out.println(e); 
        } 
        System.out.println("finally exit"); 
        finish(); 
       } 
      }); 
    t.start(); 
的[無法以編程方式的Android應用的屏幕亮度設置]