From ca1d991c9819366d50e400f9d0e28b5d2c3d5027 Mon Sep 17 00:00:00 2001 From: Juha Heinanen Date: Tue, 12 May 2026 07:48:18 +0300 Subject: [PATCH] Keep screen on when there is active call Avoid lint warning --- app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt b/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt index dd2f5446..2a2188cf 100644 --- a/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt +++ b/app/src/main/kotlin/com/tutpro/baresip/MainScreen.kt @@ -20,6 +20,7 @@ import android.os.SystemClock import android.provider.DocumentsContract import android.provider.MediaStore import android.telecom.TelecomManager +import android.view.WindowManager import android.widget.Toast import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts @@ -239,6 +240,12 @@ private fun MainScreen( BaresipService.isMainVisible = true viewModel.updateSpeakerPhoneStatus(BaresipService.speakerPhone) viewModel.updateCalls(Call.calls().toList()) + + if (Call.inCall()) + (ctx as? Activity)?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + else + (ctx as? Activity)?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + (Call.call("incoming") ?: Call.calls().lastOrNull())?.let { spinToAor(viewModel, it.ua.account.aor) } ?: run { @@ -2117,7 +2124,7 @@ private fun makeCall(ctx: Context, viewModel: ViewModel, uriText: String, viewModel.dialerState.callButtonsEnabled.value = false var error = "" val tm = ctx.getSystemService(Context.TELECOM_SERVICE) as TelecomManager - if (ua.account.isMobile) { + if (VERSION.SDK_INT >= 29 && ua.account.isMobile) { val phoneAccountHandle = Utils.pstnAccountHandle(ctx) if (phoneAccountHandle != null) { val extras = Bundle().apply { @@ -2423,6 +2430,7 @@ fun handleServiceEvent(ctx: Context, viewModel: ViewModel, event: String, params showCall(ctx, viewModel, ua) } "call established" -> { + (ctx as? Activity)?.window?.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) if (aor == viewModel.selectedAor.value) { viewModel.dialerState.callButtonsEnabled.value = true // Re-enable dialer val callp = params[1] as Long @@ -2521,6 +2529,8 @@ fun handleServiceEvent(ctx: Context, viewModel: ViewModel, event: String, params showCall(ctx, viewModel, ua) } "call closed" -> { + if (Call.calls().isEmpty()) + (ctx as? Activity)?.window?.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) viewModel.updateCalls(Call.calls().toList()) val activity = ctx as? Activity if (activity != null) {