From f066a2a5554f0ffa43e9a80a35d09fe364118538 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 10 May 2026 14:39:27 +0200 Subject: [PATCH] fix(audio): Mute-Button stoppt jetzt auch laufenden PCM-Stream MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit pcmStreamActive wurde beim isFinal-Chunk schon auf false gesetzt, der AudioTrack spielte aber noch aus seinem Buffer (kann sekundenlang sein). stopPlayback() uebersprang darum PcmStreamPlayer.stop() — ARIA redete weiter obwohl Spotify schon resumed war. Fix: stop() immer rufen, der Flag-Check faellt weg (ist eh idempotent). Co-Authored-By: Claude Opus 4.7 (1M context) --- android/src/services/audio.ts | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/android/src/services/audio.ts b/android/src/services/audio.ts index 4852bd4..91ba372 100644 --- a/android/src/services/audio.ts +++ b/android/src/services/audio.ts @@ -1098,14 +1098,15 @@ class AudioService { if (this.preloadedPath) RNFS.unlink(this.preloadedPath).catch(() => {}); this.preloadedPath = ''; } - // PCM-Stream ebenfalls hart stoppen (Cancel/Abbruch) - if (this.pcmStreamActive) { - PcmStreamPlayer?.stop().catch(() => {}); - this.pcmStreamActive = false; - this.pcmBuffer = []; - this.pcmBytesCollected = 0; - this.pcmMessageId = ''; - } + // PCM-Stream ebenfalls hart stoppen (Cancel/Abbruch). + // pcmStreamActive wird beim isFinal-Chunk schon false gesetzt — der + // AudioTrack spielt aber noch sekundenlang aus seinem Buffer ab. Daher + // IMMER stop() aufrufen, ohne den Flag zu pruefen (ist idempotent). + PcmStreamPlayer?.stop().catch(() => {}); + this.pcmStreamActive = false; + this.pcmBuffer = []; + this.pcmBytesCollected = 0; + this.pcmMessageId = ''; // Audio-Focus sofort freigeben — User hat explizit abgebrochen this._cancelDeferredFocusRelease(); AudioFocus?.release().catch(() => {});