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