Android как перевести устройство в спящий режим?(выключить экран) - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь добавить в свое приложение функциональность, которая бы периодически отправляла устройство в спящий режим.Сейчас я использую 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, когда экран снова включается ..

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

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

...