Я решил эту проблему сегодня.
Сначала вы должны добавить разрешение в свой файл AndroidManifest.xml:
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
Где точное место, чтобы поместить это в файл?
<manifest>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<application>
<activity />
</application>
</manifest>
Это разрешение говорит о том, что вам разрешено изменять настройки, которые влияют и на другие приложения.
Теперь вы можете включать и выключать автоматический режим яркости.
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC); //this will set the automatic mode on
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL); //this will set the manual mode (set the automatic mode off)
Автоматический режим включен или выключен прямо сейчас? Вы можете получить информацию
int mode = -1;
try {
mode = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE); //this will return integer (0 or 1)
} catch (Exception e) {}
Итак, если вы хотите изменить яркость вручную, вы должны сначала установить ручной режим, а после этого вы можете изменить яркость.
примечание: SCREEN_BRIGHTNESS_MODE_AUTOMATIC равно 1
примечание: SCREEN_BRIGHTNESS_MODE_MANUAL равно 0
Вы должны использовать это
if (mode == Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC) {
//Automatic mode
} else {
//Manual mode
}
вместо этого
if (mode == 1) {
//Automatic mode
} else {
//Manual mode
}
Теперь вы можете изменить яркость вручную
Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, brightness); //brightness is an integer variable (0-255), but dont use 0
и яркость чтения
try {
int brightness = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); //returns integer value 0-255
} catch (Exception e) {}
Теперь все настроено правильно, но ... вы еще не видите изменения.
Вам нужна еще одна вещь, чтобы увидеть изменения!
Обновите экран ... так сделайте это:
try {
int br = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS); //this will get the information you have just set...
WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = (float) br / 255; //...and put it here
getWindow().setAttributes(lp);
} catch (Exception e) {}
Не забудьте разрешение ...
<uses-permission android:name="android.permission.WRITE_SETTINGS" />