Android: enable immersive fullscreen

main
Peter Steinberger 2025-12-18 00:07:58 +01:00
parent 5f0e474be1
commit 693215723a
1 changed files with 24 additions and 0 deletions

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 =