通过Android应用程序更改屏幕亮度

时间:2015-02-28 08:34:18

标签: android

我有同样的需求,例如this,但我发现这个问题的答案不起作用。

我希望在我的应用运行时制作按钮来更改屏幕亮度。

我找到了这段代码,但是如果我直接将此代码复制到mainActivity中,它就无效了。

WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);

我使用的是android studio,API级别为21 我添加了用户权限。

这段代码离我的目标最近,谁可以帮我运行这段代码?

3 个答案:

答案 0 :(得分:1)

这对我有用:

onCreate()方法中写下这个,

private int brightness;

try{
    Settings.System.putInt(getContentResolver(),
                           Settings.System.SCREEN_BRIGHTNESS_MODE,
                           Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);

    brightness = Settings.System.getInt(getContentResolver(), 
                               Settings.System.SCREEN_BRIGHTNESS);
}
catch(SettingNotFoundException e){
    Log.e("Error", "Cannot access system brightness");
    e.printStackTrace();
}

要更新亮度,

Settings.System.putInt(getContentResolver(), System.SCREEN_BRIGHTNESS, brightness);
LayoutParams layoutpars = getWindow().getAttributes();
layoutpars.screenBrightness = brightness / (float)255;
getWindow().setAttributes(layoutpars);

清单中的权限,

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

答案 1 :(得分:0)

如果你仔细阅读这个问题,你会发现你需要刷新你的活动,一个可能的解决方案来刷新你的活动(也就是那个答案中提到的)是创建一个虚拟活动,启动它并完成它的onCreate()方法。 您还需要在清单中使用此权限:

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

答案 2 :(得分:0)

Window#mWindowAttributes screenBrightness 0 到 1 调节亮度从暗到全亮