Обновить яркость дисплея на Android после изменения его программно
-
09-10-2019 - |
Вопрос
Я пытаюсь обновить яркость дисплея с виджета, но у меня есть некоторые проблемы.
Чтобы изменить уровень яркости, я использую:
Settings.System.putInt(context.getContentResolver(),android.provider.Settings.System.SCREEN_BRIGHTNESS, 200);
Это изменяет настройку дисплея (на самом деле на дисплее -> яркость, уровень правильный), но эффективная яркость дисплея не изменяется. Если я заблокирую экран и разблокируйте яркость, наконец, изменяется на значение, которое я установил.
Я предполагаю, что это проблема обновления настроек, так как настройки дисплея могут быть немедленно обновлены после изменения настроек?
Я прочитал это WindowManager.LayoutParams lp = getWindow().getAttributes();
Следует использовать, но я работаю в виджете приложения, поэтому GetWindow () не может быть вызван.
Решение
У меня была похожая проблема и только что создала активность без пользовательского интерфейса, чтобы сделать изменение яркости, использовали намерение запустить его из виджета приложения.
Другие советы
Во-первых, значение для модификации в LayoutParams Screenbrights. Отказ Вам тогда придется сделать window.ettattributes. применить это. В виде Geekyouup. Сказал, что вы можете сделать манекетную деятельность, чтобы получить ваш окно объекта.
Можете ли вы использовать этот код в вашем Remoteview,
Settings.System.putInt(context.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness);
// This makes the new screen brightness effective
WindowManager.LayoutParams layoutParams = ((Activity)context).getWindow().getAttributes();
float b = brightness/255.0f;
if(b == 0.0)
b = 0.01f;
layoutParams.screenBrightness = b;
((Activity)context).getWindow().setAttributes(layoutParams);
Этот код отлично работает, когда вы устанавливаете яркость экрана телефона изнутри пользовательский класс, который не расширяя активность Но вам нужен только контекст.