簡體   English   中英

Android短屏亮度碼!

[英]Android short screen brightness code!

誰知道為什么這段代碼沒有降低我的應用程序的背光?

Context context = this;

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

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

官方 API 設置亮度是用 WindowManager.LayoutParams.screenBrightness,它可以讓你為自己的應用程序的 window 設置亮度。 當用戶進出您的應用程序時,該平台將自動更改亮度。

使用它來改變它:

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

如果要更改當前應用程序的亮度,請使用發布的代碼 hackbod

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

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

訣竅是,首先必須更改應用程序的亮度,然后更改全局亮度。 否則只有設置菜單中的“亮度滑塊”會改變其 position 但這不會影響亮度。 只有當用戶點擊 slider 時,才會應用亮度。

    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();

按照這段代碼,我想我已經對你之前的問題發表了評論:)

參考 tis tuto

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM