Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
package dev.fluttercommunity.plus.wakelock
import android.app.Activity
import android.view.WindowManager
import IsEnabledMessage
import ToggleMessage
/**
Manages the wakelock state to keep the screen on or off for an Android Activity. */ internal class Wakelock {
var activity: Activity? = null
set(value) {
require(value != null) { "Activity cannot be null" }
field = value
}
private val isScreenKeptOn: Boolean
get() = activity?.window?.attributes?.flags
?.and(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) != 0
/**
Toggles the wakelock state based on the provided [ToggleMessage]. *
@param message The toggle message containing the enable state. * @throws NoActivityException If no activity is set. */ fun toggle(message: ToggleMessage) { val currentActivity = activity ?: throw NoActivityException() val enable = message.enable ?: return // Gracefully handle null enable
when {
enable && !isScreenKeptOn -> {
currentActivity.window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
!enable && isScreenKeptOn -> {
currentActivity.window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
}
/**
/**
Description
A clear and concise description of what your PR accomplishes.