From b5c0e925329af374489ae601c6af05d4af142358 Mon Sep 17 00:00:00 2001 From: Valter Costa Date: Fri, 2 Jan 2026 12:58:33 +0000 Subject: [PATCH 1/3] Fix overlay position after screen off --- .../ki2/karoo/overlay/OverlayWindowHandler.kt | 13 +++++++++++++ .../karoo/overlay/manager/BaseOverlayManager.java | 7 +++++++ .../ki2/karoo/overlay/manager/OverlayManager.java | 5 +++++ 3 files changed, 25 insertions(+) diff --git a/app/src/main/java/com/valterc/ki2/karoo/overlay/OverlayWindowHandler.kt b/app/src/main/java/com/valterc/ki2/karoo/overlay/OverlayWindowHandler.kt index a354e512..887c9735 100644 --- a/app/src/main/java/com/valterc/ki2/karoo/overlay/OverlayWindowHandler.kt +++ b/app/src/main/java/com/valterc/ki2/karoo/overlay/OverlayWindowHandler.kt @@ -62,6 +62,13 @@ class OverlayWindowHandler( } } + private val receiverScreenOn: BroadcastReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + Timber.d("Received Screen On") + overlayManager?.refreshOverlays() + } + } + init { extensionContext.serviceClient.registerPreferencesWeakListener(preferencesListener) extensionContext.karooSystem.addConsumer { rideState: RideState -> @@ -82,6 +89,12 @@ class OverlayWindowHandler( IntentFilter("io.hammerhead.hx.intent.action.RIDE_STOP"), RECEIVER_EXPORTED ) + + service.registerReceiver( + receiverScreenOn, + IntentFilter(Intent.ACTION_SCREEN_ON), + RECEIVER_EXPORTED + ) } private fun open(){ diff --git a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java index 44757994..18da2077 100644 --- a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java +++ b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java @@ -276,4 +276,11 @@ protected void toggleOverlay() { } } + protected void refreshOverlay() { + handler.post(() -> { + parentViewGroup.setVisibility(View.INVISIBLE); + handler.post(() -> parentViewGroup.setVisibility(View.VISIBLE)); + }); + } + } diff --git a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/OverlayManager.java b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/OverlayManager.java index 5f560944..4a79a3c3 100644 --- a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/OverlayManager.java +++ b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/OverlayManager.java @@ -29,4 +29,9 @@ public void dispose() { primaryOverlayManager.dispose(); secondaryOverlayManager.dispose(); } + + public void refreshOverlays() { + primaryOverlayManager.refreshOverlay(); + secondaryOverlayManager.refreshOverlay(); + } } From 064ef442fdd7c0462418825ee07814f47a8853a2 Mon Sep 17 00:00:00 2001 From: Valter Costa Date: Fri, 2 Jan 2026 13:01:57 +0000 Subject: [PATCH 2/3] Removed empty line --- .../valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java index 18da2077..9c213eee 100644 --- a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java +++ b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java @@ -282,5 +282,4 @@ protected void refreshOverlay() { handler.post(() -> parentViewGroup.setVisibility(View.VISIBLE)); }); } - } From 102e85e30b79e048068be67f723f5a953980c151 Mon Sep 17 00:00:00 2001 From: Valter Costa Date: Fri, 2 Jan 2026 13:05:33 +0000 Subject: [PATCH 3/3] Add check --- .../valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java index 9c213eee..5315cf66 100644 --- a/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java +++ b/app/src/main/java/com/valterc/ki2/karoo/overlay/manager/BaseOverlayManager.java @@ -277,6 +277,10 @@ protected void toggleOverlay() { } protected void refreshOverlay() { + if (!overlayEnabled || parentViewGroup == null) { + return; + } + handler.post(() -> { parentViewGroup.setVisibility(View.INVISIBLE); handler.post(() -> parentViewGroup.setVisibility(View.VISIBLE));