Android: enable immersive fullscreen

This commit is contained in:
Peter Steinberger
2025-12-18 00:07:58 +01:00
parent 5f0e474be1
commit 693215723a

View File

@@ -11,6 +11,9 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.WindowInsetsControllerCompat
import androidx.lifecycle.Lifecycle import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle import androidx.lifecycle.repeatOnLifecycle
@@ -22,6 +25,7 @@ class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
applyImmersiveMode()
requestDiscoveryPermissionsIfNeeded() requestDiscoveryPermissionsIfNeeded()
requestNotificationPermissionIfNeeded() requestNotificationPermissionIfNeeded()
NodeForegroundService.start(this) NodeForegroundService.start(this)
@@ -48,6 +52,18 @@ class MainActivity : ComponentActivity() {
} }
} }
override fun onResume() {
super.onResume()
applyImmersiveMode()
}
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) {
applyImmersiveMode()
}
}
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
viewModel.setForeground(true) viewModel.setForeground(true)
@@ -58,6 +74,14 @@ class MainActivity : ComponentActivity() {
super.onStop() super.onStop()
} }
private fun applyImmersiveMode() {
WindowCompat.setDecorFitsSystemWindows(window, false)
val controller = WindowInsetsControllerCompat(window, window.decorView)
controller.systemBarsBehavior =
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
controller.hide(WindowInsetsCompat.Type.systemBars())
}
private fun requestDiscoveryPermissionsIfNeeded() { private fun requestDiscoveryPermissionsIfNeeded() {
if (Build.VERSION.SDK_INT >= 33) { if (Build.VERSION.SDK_INT >= 33) {
val ok = val ok =