58 lines
1.8 KiB
Kotlin
58 lines
1.8 KiB
Kotlin
|
package org.mosad.teapod.util
|
||
|
|
||
|
import android.app.Activity
|
||
|
import android.app.ActivityManager
|
||
|
import android.content.Context
|
||
|
import android.content.Intent
|
||
|
import android.os.Build
|
||
|
import android.view.View
|
||
|
import android.view.WindowInsets
|
||
|
import android.view.WindowInsetsController
|
||
|
|
||
|
/**
|
||
|
* hide the status and navigation bar
|
||
|
*/
|
||
|
fun Activity.hideBars() {
|
||
|
window.apply {
|
||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
|
||
|
setDecorFitsSystemWindows(false)
|
||
|
insetsController?.apply {
|
||
|
hide(WindowInsets.Type.statusBars() or WindowInsets.Type.navigationBars())
|
||
|
systemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE
|
||
|
}
|
||
|
} else {
|
||
|
@Suppress("deprecation")
|
||
|
decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE
|
||
|
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
|
||
|
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
|
||
|
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
||
|
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
|
||
|
or View.SYSTEM_UI_FLAG_FULLSCREEN)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
fun Activity.isInPiPMode(): Boolean {
|
||
|
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||
|
isInPictureInPictureMode
|
||
|
} else {
|
||
|
false // pip mode not supported
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Bring up launcher task to front
|
||
|
*/
|
||
|
fun Activity.navToLauncherTask() {
|
||
|
val activityManager = (getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager)
|
||
|
activityManager.appTasks.forEach { task ->
|
||
|
val baseIntent = task.taskInfo.baseIntent
|
||
|
val categories = baseIntent.categories
|
||
|
if (categories != null && categories.contains(Intent.CATEGORY_LAUNCHER)) {
|
||
|
task.moveToFront()
|
||
|
return
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|