Я пытаюсь установить яркость экрана из виджета. Мы знаем, что это легко возможно, так как тонны виджетов уже делают это, но как .....
В сервисе, который я вызываю из виджета, я делаю это, чтобы установить яркость:
Settings.System.putInt(this.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 200);
Это прекрасно работает, за исключением того, что оно не "обновляет" экран, чтобы применить новые настройки. Выключение и включение экрана обновляет настройки дисплея, поэтому мы знаем, что код работает.
Я также читал на нескольких сайтах, что что-то вроде этого обновит экран, но мы не можем использовать это, поскольку мы находимся в виджете. Активность виджета и сервис не могут использовать getWindow.
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = 100 / 100.0f;
getWindow().setAttributes(lp);
Как еще все эти виджеты, такие как Красивые виджеты, Управление питанием, Расширенные элементы управления и т. Д., Делают это?
Обновление:
Другой автор рекомендовал запустить пустое действие и выполнить обновление WindowManager. Это работает, но на секунду вызывает ужасный черный экран. Так как другие виджеты не делают этого, должен быть способ не показывать пустой черный экран.