From d4de83024ce5e7f6f52eca9c75c97a199f3c7fe7 Mon Sep 17 00:00:00 2001
From: Timothy <6560631+TimoPtr@users.noreply.github.com>
Date: Fri, 23 May 2025 16:01:42 +0200
Subject: [PATCH 1/4] Start barcode from dev playground
---
.../companion/android/developer/DevPlaygroundActivity.kt | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt b/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt
index 5fc94c5424b..5f2ba50d712 100644
--- a/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt
+++ b/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt
@@ -19,6 +19,7 @@ import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
+import io.homeassistant.companion.android.barcode.BarcodeScannerActivity
import io.homeassistant.companion.android.settings.SettingsActivity
import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme
@@ -69,6 +70,11 @@ private fun DevPlayGroundScreen(context: Context? = null) {
}) {
Text("Start Settings")
}
+ Button(modifier = Modifier.padding(top = 16.dp), onClick = {
+ context?.run { startActivity(BarcodeScannerActivity.newInstance(this, 0, "Title", "Subtitle", null)) }
+ }) {
+ Text("Start barcode")
+ }
}
}
From e1965f1d63aa7f75b3b6b1a12b64902b334e5c60 Mon Sep 17 00:00:00 2001
From: Timothy <6560631+TimoPtr@users.noreply.github.com>
Date: Fri, 23 May 2025 16:02:19 +0200
Subject: [PATCH 2/4] Adjust edge to edge on barcode activity for API 36
---
.../companion/android/barcode/BarcodeScannerActivity.kt | 6 +-----
.../android/barcode/view/BarcodeScannerOverlay.kt | 2 +-
.../companion/android/barcode/view/BarcodeScannerView.kt | 7 +++++--
3 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt
index 653776de289..c1a5347de4a 100644
--- a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt
+++ b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt
@@ -6,7 +6,6 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.Settings
-import androidx.activity.SystemBarStyle
import androidx.activity.addCallback
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
@@ -16,7 +15,6 @@ import androidx.appcompat.app.AlertDialog
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
-import androidx.compose.ui.graphics.toArgb
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
@@ -24,7 +22,6 @@ import com.google.zxing.BarcodeFormat
import dagger.hilt.android.AndroidEntryPoint
import io.homeassistant.companion.android.BaseActivity
import io.homeassistant.companion.android.barcode.view.BarcodeScannerView
-import io.homeassistant.companion.android.barcode.view.barcodeScannerOverlayColor
import io.homeassistant.companion.android.common.R as commonR
import io.homeassistant.companion.android.util.compose.HomeAssistantAppTheme
import java.util.Locale
@@ -65,8 +62,7 @@ class BarcodeScannerActivity : BaseActivity() {
private var requestSilently by mutableStateOf(true)
override fun onCreate(savedInstanceState: Bundle?) {
- val overlaySystemBarStyle = SystemBarStyle.dark(barcodeScannerOverlayColor.toArgb())
- enableEdgeToEdge(overlaySystemBarStyle, overlaySystemBarStyle)
+ enableEdgeToEdge()
super.onCreate(savedInstanceState)
val messageId = intent.getIntExtra(EXTRA_MESSAGE_ID, -1)
diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerOverlay.kt b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerOverlay.kt
index 30e3d6904d5..a2a1d025664 100644
--- a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerOverlay.kt
+++ b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerOverlay.kt
@@ -63,4 +63,4 @@ fun BarcodeScannerOverlay(
}
}
-val barcodeScannerOverlayColor = Color(0xAA000000)
+private val barcodeScannerOverlayColor = Color(0xAA000000)
diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt
index e3425f5dee0..450ca7f754d 100644
--- a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt
+++ b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt
@@ -1,17 +1,19 @@
package io.homeassistant.companion.android.barcode.view
+import android.annotation.SuppressLint
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
+import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.size
+import androidx.compose.foundation.layout.statusBars
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Icon
@@ -56,6 +58,7 @@ import io.homeassistant.companion.android.util.compose.safeScreenHeight
import io.homeassistant.companion.android.util.compose.screenWidth
import io.homeassistant.companion.android.util.getActivity
+@SuppressLint("UnusedBoxWithConstraintsScope")
@Composable
fun BarcodeScannerView(
title: String,
@@ -112,7 +115,6 @@ fun BarcodeScannerView(
BoxWithConstraints(
modifier = Modifier
- .safeDrawingPadding()
.fillMaxSize()
) {
val screenHeight = safeScreenHeight()
@@ -151,6 +153,7 @@ fun BarcodeScannerView(
}
},
backgroundColor = Color.Transparent,
+ windowInsets = WindowInsets.statusBars,
elevation = 0.dp
)
},
From df29bb10b2e4436d5e92d8706905754af3a3ba0d Mon Sep 17 00:00:00 2001
From: Timothy <6560631+TimoPtr@users.noreply.github.com>
Date: Tue, 27 May 2025 15:51:40 +0200
Subject: [PATCH 3/4] Apply suggestions
---
.../companion/android/barcode/BarcodeScannerActivity.kt | 4 ++++
.../companion/android/barcode/view/BarcodeScannerView.kt | 5 ++---
2 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt
index c1a5347de4a..a9eb6c155d2 100644
--- a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt
+++ b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/BarcodeScannerActivity.kt
@@ -15,6 +15,7 @@ import androidx.appcompat.app.AlertDialog
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
+import androidx.core.view.WindowCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
@@ -72,6 +73,9 @@ class BarcodeScannerActivity : BaseActivity() {
if (title == null || subtitle == null) finish() // Invalid state
val action = if (intent.hasExtra(EXTRA_ACTION)) intent.getStringExtra(EXTRA_ACTION) else null
+ // Enforce status bar to be always light so we can see it above the blur of the screen
+ WindowCompat.getInsetsController(window, window.decorView).isAppearanceLightStatusBars = false
+
setContent {
HomeAssistantAppTheme {
BarcodeScannerView(
diff --git a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt
index 450ca7f754d..31ce2dfa4ad 100644
--- a/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt
+++ b/app/src/main/kotlin/io/homeassistant/companion/android/barcode/view/BarcodeScannerView.kt
@@ -6,14 +6,12 @@ import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.WindowInsets
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.offset
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.statusBars
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Icon
@@ -57,6 +55,7 @@ import io.homeassistant.companion.android.util.compose.darkColorBackground
import io.homeassistant.companion.android.util.compose.safeScreenHeight
import io.homeassistant.companion.android.util.compose.screenWidth
import io.homeassistant.companion.android.util.getActivity
+import io.homeassistant.companion.android.util.safeTopWindowInsets
@SuppressLint("UnusedBoxWithConstraintsScope")
@Composable
@@ -153,7 +152,7 @@ fun BarcodeScannerView(
}
},
backgroundColor = Color.Transparent,
- windowInsets = WindowInsets.statusBars,
+ windowInsets = safeTopWindowInsets(),
elevation = 0.dp
)
},
From e83efb90b3e8d24a9ad3599995c0c83bbffbc1ca Mon Sep 17 00:00:00 2001
From: Timothy <6560631+TimoPtr@users.noreply.github.com>
Date: Tue, 27 May 2025 15:54:11 +0200
Subject: [PATCH 4/4] Add action in the start barcode of dev playground
---
.../companion/android/developer/DevPlaygroundActivity.kt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt b/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt
index 5f2ba50d712..c58add4f07a 100644
--- a/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt
+++ b/app/src/debug/kotlin/io/homeassistant/companion/android/developer/DevPlaygroundActivity.kt
@@ -71,7 +71,7 @@ private fun DevPlayGroundScreen(context: Context? = null) {
Text("Start Settings")
}
Button(modifier = Modifier.padding(top = 16.dp), onClick = {
- context?.run { startActivity(BarcodeScannerActivity.newInstance(this, 0, "Title", "Subtitle", null)) }
+ context?.run { startActivity(BarcodeScannerActivity.newInstance(this, 0, "Title", "Subtitle", "Action")) }
}) {
Text("Start barcode")
}