Android короткий код яркости экрана! - PullRequest
4 голосов
/ 28 мая 2011

Кто-нибудь, кто знает, почему этот код не понижает подсветку моего приложения?

Context context = this;

    Settings.System.putInt(context.getContentResolver(),
    Settings.System.SCREEN_BRIGHTNESS, 255);

Ответы [ 3 ]

11 голосов
/ 28 мая 2011

Приложениям больше не разрешено изменять глобальную яркость. Не используйте уловки, которые пытались придумать люди в разных точках, они используют частные API и будут по-разному ломаться на разных устройствах (и считаются дырами в безопасности, которые были закрыты на более поздних версиях платформы).

Официальным API для установки яркости является WindowManager.LayoutParams.screenBrightness, который позволяет вам устанавливать яркость для окна вашего собственного приложения. Платформа автоматически позаботится об изменении яркости, когда пользователь входит и выходит из вашего приложения.

Используйте это, чтобы изменить это:

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = <some value between 0 and 1>;
getWindow().setAttributes(lp);
4 голосов
/ 11 января 2012

Если вы хотите изменить яркость вашего текущего приложения, используйте код, который выложил hackbod

WindowManager.LayoutParams lp = getWindow().getAttributes();
lp.screenBrightness = <some value between 0 and 1>;
getWindow().setAttributes(lp);

Но я не могу полностью согласиться с постом hackbod.Определенно возможно изменить глобальную яркость без использования хаков.Я только что написал короткое демонстрационное приложение.

Хитрость в том, что сначала нужно изменить яркость приложения, а затем изменить глобальную яркость.В противном случае только «ползунок яркости» в меню настроек меняет свое положение, но это не влияет на яркость.Только если пользователь нажмет на слайдер, будет применена яркость.

    WindowManager.LayoutParams localLayoutParams = getWindow()
            .getAttributes();
    localLayoutParams.screenBrightness = 0.12F;
    getWindow().setAttributes(localLayoutParams);

    Settings.System.putInt(this.resolver, "screen_brightness", 30);

диапазон яркости приложения от 0 до 1, общий диапазон яркости от 0 до 255 (0 = дисплей выключен)

Также очень важно подождать некоторое время, чтобы применить настройки, если выхочу выйти потом.

    Thread t = new Thread(new Runnable() {
                public void run() {
                    try {
                        Thread.sleep(500);
                    } catch (InterruptedException e) {
                        System.out.println(e);
                    }
                    System.out.println("finally exit");
                    finish();
                }
            });
    t.start();
1 голос
/ 28 мая 2011

следуйте этому коду, я думаю, что я написал комментарий к вашему предыдущему вопросу об этом :)

см. Это Туто

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...