Привет, я попробовал все решения в Интернете и в SO, но ничего не работает. У меня есть оверлей (сервис), который появляется на весь экран, когда вы нажимаете на триггер. На оверлей я поставил несколько ярлыков, регуляторов громкости и яркости. Дело в том, что независимо от того, что я делаю, яркость не сразу меняет экран (мне нужно выключить и включить экран).
Это то, что я называю, когда ползунок яркости обновляется:
@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 (), доступной), я также попробовал хитрость создания поддельной Activity, которая вызывает код (также найденный в сети)
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, value);
android.provider.Settings.System.putInt (getContext (). getContentResolver (), android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE, android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL);
Таким образом, это означает, что когда на заднем плане происходит «какой-то процесс», регулировка яркости очень проста (как ДОЛЖНО!). Кто-нибудь может помочь мне попытаться понять, КАК я могу получить тот же эффект? Я был бы в порядке, чтобы просто запустить окно яркости с командной строкой (если бы я знал, как), но я бы, очевидно, хотел бы более тонкое решение.
Пожалуйста, дайте мне знать, что вы думаете.
ура
Emanuele