利用view的 keepScreenOn属性,通过监听compose的resume和pause来给视图添加常亮
@Composable
fun KeepScreenOn() {
val lifecycleOwner = LocalLifecycleOwner.current
val view = LocalView.current
DisposableEffect(Unit) {
val observer = LifecycleEventObserver { _, event ->
when (event) {
Lifecycle.Event.ON_RESUME -> {
// 回到前台,保持屏幕常亮
LogUtils.d("KeepScreenOn ON_RESUME ")
view.keepScreenOn = true
}
Lifecycle.Event.ON_PAUSE -> {
// 跳到后台或切到其他应用,取消保持常亮
LogUtils.d("KeepScreenOn ON_PAUSE ")
view.keepScreenOn = false
}
else -> Unit
}
}
lifecycleOwner.lifecycle.addObserver(observer)
onDispose {
lifecycleOwner.lifecycle.removeObserver(observer)
LogUtils.d("KeepScreenOn onDispose ")
view.keepScreenOn = false
}
}
}
在需要常亮的地方通过
KeepScreenOn()
就可以添加界面常亮了