Подтвердить что ты не робот

Вызов скрытого API в Android для отключения экрана

Я думаю об использовании скрытого api, чтобы отключить экран в моем приложении.
setScreenState from https://android.googlesource.com/platform/frameworks/base/+/eclair-release/core/java/android/os/Power.java делает то, что я хочу, но его скрытый API. Означает ли это, что я не должен его использовать? Я бы подумал, что это довольно стабильный API.
В настоящее время я устанавливаю тайм-аут экрана на 1 миллисекунду, а затем сброс таймаута после выключения экрана. Тем не менее, андроид игнорирует 1 миллисекунду, и вместо этого требуется около 3 секунд, чтобы выключить, а иногда он полностью игнорирует его и не отключается.
Любые предложения?

4b9b3361

Ответ 1

Вот что я сделал, чтобы обойти необходимость сделать экран сна. Вы можете сделать это в окне активности. Я спарил его, уменьшив тайм-аут ожидания до 5 секунд для этой пользовательской активности lockscreen. Вы можете просмотреть весь мой источник на моей странице проекта, но здесь соответствующая часть об отключении экрана, который работал на меня на дроиде.

public void setBright(float value) {
    Window mywindow = getWindow();
    WindowManager.LayoutParams lp = mywindow.getAttributes();
    lp.screenBrightness = value;
    mywindow.setAttributes(lp);
}

//call this task to turn off the screen in a fadeout.


class Task implements Runnable {
    public void run() {                
        if (bright != 0) {
            setBright(bright/100); //start at 10% bright and go to 0 (screen off)
            bright--;
            serviceHandler.postDelayed(myTask, 100L);
        } else {
            setBright((float) 0.0); 
            bright = 10;//put bright back
        }
    }
}

Я использовал задачу обработчика в качестве теста для метода, он работал, когда я вызвал его из onBackPressed в первой сборке. Теперь у меня только что задано значение setBright равным 0.0 при onCreate. Это делает его таким, чтобы экран фактически не включался, даже если мой пользователь просыпает процессор с помощью случайного нажатия клавиши громкости. Когда я хочу, чтобы экран продолжался, у меня есть вызов вызова события setBright со значением больше 0 (1.0 означает max яркий). Мне очень повезло, что это работает для моей пользовательской активности lockscreen. Я обнаружил, что изменение литеральной настройки яркости не работает так, и не отключит экран.

проверить мой другой источник на моем проекте svn http://code.google.com/p/mylockforandroid/source/checkout

Насколько сложно, по вашему мнению, попросить команду андроида добавить поддержку для выключения экрана или определения того, должен ли экран просыпаться через замену медиатора Lock аналогично тому, как вы можете запрограммировать альтернативное приложение Home Launcher?

Ответ 3

setScreenState... делает то, что я хочу, но его скрытый API. Означает ли это, что я не следует использовать его?

Да, это означает, что вы не должны его использовать. В этом случае весь класс будет исключен из SDK. Пожалуйста, придерживайтесь SDK.