diff --git a/android/src/screens/ChatScreen.tsx b/android/src/screens/ChatScreen.tsx index 26ed250..a51e6c1 100644 --- a/android/src/screens/ChatScreen.tsx +++ b/android/src/screens/ChatScreen.tsx @@ -1690,8 +1690,12 @@ const ChatScreen: React.FC = () => { // Im Hintergrund gibt's kein Multi-Turn → direkt re-armen (skipPassive). // converse=false (Skill-/Einzelantwort, z.B. 'was laeuft gerade') → auch // ohne 30s: vorlesen + direkt zurueck aufs Wake-Word. + // Im Hintergrund normalerweise direkt re-armen (kein Multi-Turn) — ABER + // wenn Hintergrund-Wake bewusst AN ist, will der User auch im Hintergrund + // ein Gespraech fuehren, also den Konversationsmodus offen halten. const bg = AppState.currentState !== 'active'; - wakeWordService.endConversation(bg || !converseRef.current).catch(() => {}); + const bgForcesArmed = bg && !wakeWordService.isBgWakeEnabled(); + wakeWordService.endConversation(bgForcesArmed || !converseRef.current).catch(() => {}); }); return () => unsubPlayback(); }, []); diff --git a/android/src/services/wakeword.ts b/android/src/services/wakeword.ts index 6e924c4..6961d1f 100644 --- a/android/src/services/wakeword.ts +++ b/android/src/services/wakeword.ts @@ -348,6 +348,12 @@ class WakeWordService { console.log('[WakeWord] Hintergrund-Wake = %s', enabled); } + /** Ist Hintergrund-Wake an? Steuert u.a. ob der Konversationsmodus auch im + * Hintergrund weiterlaeuft (sonst: im Hintergrund direkt zurueck aufs Wake-Word). */ + isBgWakeEnabled(): boolean { + return this.bgWakeEnabled; + } + /** App im Vordergrund: Detections wieder freigeben, plus kurzer Cooldown * als Schutz gegen den AudioFocus-/AudioTrack-Spike direkt nach dem Resume. * 1s statt 3s — 3s hat sich "traege" angefuehlt (Trigger direkt nach dem