From 2dfd21d1d0d0bb76ad0fb22fd493355d83c4f06d Mon Sep 17 00:00:00 2001 From: duffyduck Date: Sun, 10 May 2026 15:22:21 +0200 Subject: [PATCH] =?UTF-8?q?fix(audio):=20Play-Button=20setzt=20jetzt=20auc?= =?UTF-8?q?h=20Wiedergabe-Tracking=20=E2=80=94=20Anruf-Test=20via=20Playba?= =?UTF-8?q?ck=20funktioniert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 (1M context) --- android/src/services/audio.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/android/src/services/audio.ts b/android/src/services/audio.ts index 7c1eef7..78979c4 100644 --- a/android/src/services/audio.ts +++ b/android/src/services/audio.ts @@ -1007,7 +1007,10 @@ class AudioService { } } - /** Audio aus lokaler Datei (file:// Pfad) in die Queue und abspielen. */ + /** Audio aus lokaler Datei (file:// Pfad) in die Queue und abspielen. + * Setzt zusaetzlich playbackStartTime + currentPlaybackMsgId damit ein + * Anruf waehrend dieses Playbacks korrekt erfasst wird (ohne dieses + * Tracking liefert captureInterruption nichts → kein Auto-Resume). */ async playFromPath(filePath: string): Promise { if (!filePath) return; try { @@ -1016,6 +1019,12 @@ class AudioService { console.warn('[Audio] Cache-Datei existiert nicht mehr:', cleanPath); return; } + const msgIdMatch = cleanPath.match(/([0-9a-f-]+)\.wav$/i); + if (msgIdMatch) { + this.currentPlaybackMsgId = msgIdMatch[1]; + // Start-Zeit so setzen dass elapsed = LEADING (≈ 0 nach captureInterruption-Berechnung) + this.playbackStartTime = Date.now() - this.LEADING_SILENCE_SEC * 1000; + } const b64 = await RNFS.readFile(cleanPath, 'base64'); this.playAudio(b64); } catch (err) {