Привет Я пробовал все решения в Интернете и в SO, но ничего не работает. У меня есть оверлей (служба), которые всплывают во весь экран при нажатии на триггер. На наложении я добавил несколько ярлыков, регуляторы громкости и управление яркостью. Дело в том, что независимо от того, что я делаю, яркость не сразу меняет экран (мне нужно выключить и включить экран).Настройка яркости в Android - ничего не работало до сих пор
Это то, что я называю, когда ползунок яркости обновляется:
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
int value = (int)(arg1*255.0/100);
int V=-1;
try {
V=android.provider.Settings.System.getInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("V="+V+"brightness="+value);
//android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, value);
android.provider.Settings.System.putInt(getContext().getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
// Intent intent= new Intent(getContext(), Bright.class);
// Bundle b=new Bundle();
// b.putFloat("lvl", (float)(arg1*0.01));
// intent.putExtras(b);
// //intent.putExtra("lvl", (float)(arg1*0.01));
// intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// getContext().startActivity(intent);
}
});
, который работает, если вы отключить экран и, но не иначе. Поскольку класс является услугой (не GetWindow() доступен), я также попробовал трюк нерест поддельный активность, которая вызывает код (также можно найти на веб)
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness=0.9f;
getWindow().setAttributes(lp);
К сожалению, ни один из приведенных выше решений, кажется, работа на всех в моем случае. Кажется, что WindowManager ничего не делает. Наверное, это то, как реализовано мое приложение (системное оверлейное, а не «классическое» окно)
В любом случае, я вдруг заметил, что слайдер начал работать, когда я покинул окно «Настройки»> «Яркость», открытое в фоновом режиме. Таким образом, слайдер будет иметь прямое управление яркостью системы, просто установив две строки:
android.provider.Settings.System.putInt (getContext(). GetContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS, значение); android.provider.Settings.System.putInt (getContext(). GetContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
Значит, это означает, что когда происходит «какой-то процесс», происходящий в фоновом режиме, регулировка яркости очень проста (как СЛЕДУЕТ!). Может ли кто-нибудь помочь мне попытаться понять, КАК я могу получить тот же эффект? Я был бы готов просто запустить окно яркости с помощью командной строки (если бы я знал, как это сделать), но я, очевидно, хотел бы получить более тонкое решение.
Пожалуйста, дайте мне знать, что вы думаете.
веселит
Emanuele
ЭТО РАБОТАЕТ! он начал работать после того, как я добавил «final» перед «WindowManager.LayoutParams», но потом снова взял его, и он все еще работал. Я перезагрузился, и теперь он работает с или без «финала». Это просто совпадение или действительно ли «окончательный» имеет значение? Большое спасибо в любом случае! – Lele
(вы правы в 10f, я оставил его там по ошибке, но я действительно использовал значения между 0 и 1. Я обновил код сейчас. Приветствия! – Lele