Ответ 1
Как насчет использования интерфейса IHardwareService? Пример можно найти в этом tutorial.
Обновление: ссылка на учебник по-прежнему работает, но фактический код также доступен в следующем ответе.
Я хочу программно изменить яркость экрана в android. В настоящий момент я использую этот код:
WindowManager.LayoutParams lp = getWindow().getAttributes();
float brightness=1.0f;
lp.screenBrightness = brightness;
getWindow().setAttributes(lp);
Но этот пример кода работает на кексе, а не в последних версиях. Я использую последнюю версию SDK. Какое предпочтительное решение для новых версий Android?
Как насчет использования интерфейса IHardwareService? Пример можно найти в этом tutorial.
Обновление: ссылка на учебник по-прежнему работает, но фактический код также доступен в следующем ответе.
Это можно сделать, используя:
WindowManager.LayoutParams layout = getWindow().getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);
См. также: http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#screenBrightness
Вы должны добавить params к Window
, прежде чем он будет создан, иначе он будет бросать java.lang.IllegalArgumentException: Window type can not be changed after the window is added.
См. пример с помощью android.app.Dialog.Dialog
.
final Dialog dialog = new Dialog(this) {
@Override
public void onAttachedToWindow() {
super.onAttachedToWindow();
WindowManager.LayoutParams layout = getWindow()
.getAttributes();
layout.screenBrightness = 1F;
getWindow().setAttributes(layout);
}
};
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
dialog.show();
Обратите внимание, что значение яркости находится между 0.0F и 1.0F.
@kamal_tech_view: вы должны преобразовать значение layout.screenBrightness = value; плавать
Слишком поздно ответить, но хочу улучшить.
Я пробовал код Tor-morten, но для конкретного экрана я хотел что-то изменить, я сделал сервис для этого.
Измените яркость в соответствии с окружающим светом в андроиде
Надеюсь, это будет полезно для других.
final Dialog dialog = new Dialog(act);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog
.setContentView(R.layout.menubase_brightness_control);
dialog.setCanceledOnTouchOutside(true);
SeekBar global_brightness_control = (SeekBar) dialog
.findViewById(R.id.global_brightness_control);
global_brightness_control.setMax(255);
global_brightness_control.setProgress(Settings.System.getInt(
con.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS));
global_brightness_control
.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
public void onProgressChanged(SeekBar seekBar,
int progress, boolean fromUser) {
Settings.System
.putInt(con.getContentResolver(),
Settings.System.SCREEN_BRIGHTNESS, progress);
}
});
dialog.show();