Весь вопрос в заголовке, поэтому я хотел бы подчеркнуть, насколько это возможно:
Меня интересует текущее значение (а не его текущие настройки)
Меня интересует реальное значение (поэтому, если яркость экрана сейчас ниже, чем за секунду до этого, значение также должно быть ниже)
К сожалению, несмотря на чтение многочисленных сообщений, я не знаю ответа. Я написал небольшую утилиту, которая каждую секунду показывает время и яркость. И это не работает -- потому что, когда телефон (LG L5 с Android 4.0) автоматически понижает яркость (экран затемняется, и в этом нет никаких сомнений) значения остаются прежними то же самое!
Вот соответствующий фрагмент кода:
try
{
float sys_brightness = android.provider.Settings.System
.getFloat(getContentResolver(),
android.provider.Settings
.System.SCREEN_BRIGHTNESS);
WindowManager.LayoutParams lp = getWindow().getAttributes();
float dim = lp.dimAmount;
float scr_brightness = lp.screenBrightness;
boolean dim_changed = (lp.flags & WindowManager.LayoutParams
.DIM_AMOUNT_CHANGED)>0;
textView.setText(String.format("%02d:%02d:%02d", hours, minutes, seconds)+" "
+String.format("%02f, %02f, %02f", sys_brightness,dim,scr_brightness)
+" "+Boolean.toString(dim_changed));
}
catch (SettingNotFoundException ex)
{
textView.setText("excepton");
}
Для справки, значения -- 92, 1.0, -1.0, ложь. Все время.
ВОПРОС -- как прочитать текущее, реальное значение яркости/затемнения?
Я добавил часы для вывода, чтобы убедиться, что мои показания тикают. И они есть.