有谁知道为什么这段代码没有降低我应用程序的背光?
Context context = this;
Settings.System.putInt(context.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, 255);
答案 0 :(得分:11)
不再允许应用程序修改全局亮度。不要使用人们试图在各个方面提出的技巧,这些技巧使用私有API并且会在不同设备上以各种方式中断(并且被认为是在更新版本的平台上已经关闭的安全漏洞)。 / p>
设置亮度的官方API是使用WindowManager.LayoutParams.screenBrightness,它允许您为自己的应用程序窗口设置亮度。当用户移入和移出您的应用时,该平台将自动处理亮度变化。
用它来改变它:
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = <some value between 0 and 1>;
getWindow().setAttributes(lp);
答案 1 :(得分: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();
答案 2 :(得分:1)
按照此代码,我想我已就你之前的问题发表评论:)
请参阅tuto