我对Android开发相对较新。我已经能够通过这样的方式调整我自己的应用程序的屏幕亮度:
WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 0;
getWindow().setAttributes(layout);
我真正需要做的是在系统级别更改屏幕亮度。我想从服务或意向服务中做到这一点。我遇到的问题是
getWindow()
从服务中调用失败。我认为这可能是通过使用ViewOverlays或其他东西实现的,但到目前为止我尝试的所有内容都失败了。有没有人有想法?
我需要一个解决方案,我的应用程序在后台启动服务,然后该服务会在您在其他应用程序或主屏幕上使用设备时调整屏幕亮度。
答案 0 :(得分:0)
你可以试试这个:
android.provider.Settings.System.putInt(getContentResolver(),
android.provider.Settings.System.SCREEN_BRIGHTNESS,
value);
将此添加到清单
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
并检查运行时权限,如下
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_SETTINGS}, 1);
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//permission accepted
} else {
// permission denied,
}
return;
}
}
}