fix(audio): Auto-Resume nach Anruf — pcmBuffer bleibt erhalten
Logs zeigten "WAV nicht binnen 30000ms verfuegbar" — pcmBuffer wurde von haltAllPlayback geleert, isFinal schrieb daher eine leere WAV (oder gar keine, weil pcmMessageId leer war). Neue Methode pauseForCall (statt haltAllPlayback im Anruf-Pfad): - AudioTrack stoppt + AudioFocus release (Spotify resumed) - pcmBuffer + pcmMessageId BLEIBEN — Bridge-Chunks werden weiter gesammelt - _pausedForCall macht weitere Chunks "silent" (kein writeChunk, nur Cache) - isFinal schreibt WAV trotz Anruf → resumeFromInterruption findet sie Plus captureInterruption idempotent gemacht: ringing→offhook ueberschreibt die Position vom ersten Halt nicht mehr (Date.now-Tracking laeuft stumpf weiter obwohl Audio gestoppt ist — der erste Halt ist die echte Position). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -189,12 +189,17 @@ class PhoneCallService {
|
||||
private _haltForCall(toast: string): void {
|
||||
// Position merken bevor wir den Stream killen — fuer Auto-Resume.
|
||||
audioService.captureInterruption();
|
||||
audioService.haltAllPlayback(toast);
|
||||
// pauseForCall (statt haltAllPlayback): pcmBuffer + messageId bleiben,
|
||||
// weitere Chunks werden weiter gesammelt damit isFinal die WAV schreibt.
|
||||
audioService.pauseForCall(toast);
|
||||
wakeWordService.pauseForCall().catch(() => {});
|
||||
ToastAndroid.show(toast, ToastAndroid.SHORT);
|
||||
}
|
||||
|
||||
private _resumeAfterCall(toast: string): void {
|
||||
// Anruf-Pause aufheben — neue Chunks duerfen wieder direkt abgespielt
|
||||
// werden (falls die Bridge mid-Anruf isFinal noch nicht geschickt hat).
|
||||
audioService.endCallPause();
|
||||
wakeWordService.resumeFromCall().catch(() => {});
|
||||
ToastAndroid.show(toast, ToastAndroid.SHORT);
|
||||
// Auto-Resume: ab gemerkter Position weiterspielen wenn ARIA vor dem
|
||||
|
||||
Reference in New Issue
Block a user