Android как перевести устройство в спящий режим? (выключить экран)

Я пытаюсь добавить в свое приложение функциональность, которая будет периодически отправлять устройство в спящий режим. Сейчас я использую android.permission.WRITE_SETTINGS чтобы сделать это, но в будущем я буду использовать android.permission.WRITE_SECURE_SETTINGS,

код:

startWakeLockTest(); -->


dimScreenWithInterval(DIM_SCREEN_MID_LEVEL, TIMER_DIM_SCREEN_MID_LEVEL);

    private void dimScreenWithInterval(final int screenBrightnessValue, final long handlerTime) {

        mDimHandler = new Handler();
        mDimRunnable = new Runnable() {
            @Override
            public void run() {
                dimScreen(screenBrightnessValue);
                if (handlerTime == TIMER_DIM_SCREEN_MID_LEVEL) {

                    dimScreenWithInterval(DIM_SCREEN_LOW_LEVEL, TIMER_DIM_SCREEN_LOW_LEVEL);
                } else if (handlerTime == TIMER_DIM_SCREEN_LOW_LEVEL) {

                    putDeviceIntoSleepingMode();
                }

            }
        };
        mDimHandler.postDelayed(mDimRunnable, handlerTime);

    }


    private void putDeviceIntoSleepingMode() {
        turnScreenOff();
    }

       private void turnScreenOff() {
        mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "sensorsTest:tag");
        mWakeLock.acquire(WAKE_LOG_TIMEOUT);
        // because there is no easy way to put the device into sleep mode - just change the screen_off_timeout in settings and then chan=nge it back after on resume
        Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_OFF_TIMEOUT, 100);
    }

По сути, я изменяю System screen_off_timer на 0, а затем возвращаю его обратно в реальное устройство screen_off_time, когда экран снова включается..

Это кажется очень странной и плохой практикой...

У кого-нибудь есть лучшее решение? заранее спасибо

0 ответов

Другие вопросы по тегам