我有同样的需求,例如this,但我发现这个问题的答案不起作用。
我希望在我的应用运行时制作按钮来更改屏幕亮度。
我找到了这段代码,但是如果我直接将此代码复制到mainActivity中,它就无效了。
WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
我使用的是android studio,API级别为21 我添加了用户权限。
这段代码离我的目标最近,谁可以帮我运行这段代码?
答案 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 调节亮度从暗到全亮