From 62018b3e518091e476d95692080c6d6fc258fb30 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 10 May 2026 17:24:55 +0200 Subject: [PATCH] =?UTF-8?q?revert(audio):=20kickReleaseMedia=20raus=20?= =?UTF-8?q?=E2=80=94=20bricht=20Spotify's=20Auto-Resume?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Logs zeigen jetzt KEINEN haengenden RNSound-Focus mehr (Library-Version oder Sound-Lifecycle hat sich geaendert). Der Kick mit AUDIOFOCUS_GAIN (permanent) sagte Spotify "user hat manuell etwas anderes gestartet" → Spotify resumed nicht automatisch. Ohne Kick: unser Focus war AUDIOFOCUS_GAIN_TRANSIENT (USAGE_ASSISTANT) — beim release bekommt Spotify einen sauberen GAIN nach TRANSIENT-Loss und resumed automatisch. Native kickReleaseMedia bleibt fuer den Fall dass es nochmal gebraucht wird, wird aber nicht mehr gerufen. Co-Authored-By: Claude Opus 4.7 (1M context) --- android/src/services/audio.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/android/src/services/audio.ts b/android/src/services/audio.ts index 0ad4a6b..f2cdc68 100644 --- a/android/src/services/audio.ts +++ b/android/src/services/audio.ts @@ -1256,13 +1256,13 @@ class AudioService { this.pcmBuffer = []; this.pcmBytesCollected = 0; this.pcmMessageId = ''; - // Audio-Focus sofort freigeben — User hat explizit abgebrochen + // Audio-Focus sofort freigeben — User hat explizit abgebrochen. + // Unser Focus war TRANSIENT, Spotify resumed darum automatisch beim + // Abandon. Den frueheren kickReleaseMedia haben wir entfernt: er + // requestete USAGE_MEDIA mit GAIN (permanent), was Spotify als + // "user-action stopp" interpretierte und Auto-Resume verhinderte. this._cancelDeferredFocusRelease(); AudioFocus?.release().catch(() => {}); - // Focus-Stack immer aufmischen — bei aelteren Nachrichten die ueber - // tts_request (PCM-Stream) re-rendert wurden, bleibt Spotify ohne den - // Kick auch pausiert. Kostet nichts, deckt beide Pfade ab. - AudioFocus?.kickReleaseMedia?.().catch(() => {}); } // --- Status & Callbacks ---