feat(audio): Auto-Resume nach Anruf ab der gemerkten Position
Stefans Idee: Position beim Halt merken (Date.now() - playbackStart - leadingSilence), nach dem Auflegen ab da weitermachen. Wenn der Cache noch nicht komplett ist (final-Marker kam waehrend Anruf), warten wir bis zu 30s auf das WAV — meistens ist's schon da weil das Telefonat laenger als die Antwort dauerte. audio.ts: - captureInterruption(): merkt position + messageId, returnt Sekunden - resumeFromInterruption(maxWaitMs): wartet auf WAV-Cache, lädt mit Sound, setCurrentTime(position), play - Tracking-Felder: playbackStartTime, currentPlaybackMsgId, pausedX phoneCall.ts: - _haltForCall ruft captureInterruption() VOR haltAllPlayback - _resumeAfterCall triggert resumeFromInterruption(30s) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -176,6 +176,8 @@ class PhoneCallService {
|
||||
}
|
||||
|
||||
private _haltForCall(toast: string): void {
|
||||
// Position merken bevor wir den Stream killen — fuer Auto-Resume.
|
||||
audioService.captureInterruption();
|
||||
audioService.haltAllPlayback(toast);
|
||||
wakeWordService.pauseForCall().catch(() => {});
|
||||
ToastAndroid.show(toast, ToastAndroid.SHORT);
|
||||
@@ -184,6 +186,14 @@ class PhoneCallService {
|
||||
private _resumeAfterCall(toast: string): void {
|
||||
wakeWordService.resumeFromCall().catch(() => {});
|
||||
ToastAndroid.show(toast, ToastAndroid.SHORT);
|
||||
// Auto-Resume: ab gemerkter Position weiterspielen wenn ARIA vor dem
|
||||
// Anruf gerade redete. Wartet bis zu 30s auf den WAV-Cache (falls
|
||||
// final-Marker erst nach dem Anruf-Ende kam).
|
||||
audioService.resumeFromInterruption(30000).then(ok => {
|
||||
if (ok) {
|
||||
console.log('[PhoneCall] Auto-Resume von gemerkter Position gestartet');
|
||||
}
|
||||
}).catch(() => {});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user