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:
@@ -18,6 +18,7 @@ Wenn was anders ist, ist's ein Bug.
|
||||
| TTS zu Ende | nach 800ms resumed | (Conversation-Window)| (tts released) |
|
||||
| Eingehender Anruf (auch VoIP)| — | Mikro pausiert | aus |
|
||||
| Anruf vorbei | — | Mikro wieder armed | aktiv ('wake') |
|
||||
| Anruf vorbei (Auto-Resume) | nach 800ms resumed | aus | aktiv ('tts') |
|
||||
|
||||
Wichtige Mechanismen:
|
||||
- **Underrun-Schutz** im PcmStreamPlayer fuettert Stille rein wenn die
|
||||
@@ -32,6 +33,11 @@ Wichtige Mechanismen:
|
||||
zu/bereit").
|
||||
- **Anruf-Erkennung** ueber TelephonyManager (klassisch) + AudioFocus-
|
||||
Loss-Listener mit Polling-Fallback (VoIP wie WhatsApp/Signal/Discord).
|
||||
- **Auto-Resume nach Anruf**: beim Halt wird die Wiedergabe-Position
|
||||
gemerkt (Date.now() - playbackStart - leadingSilence). Nach Auflegen
|
||||
wartet die App bis zu 30s auf den WAV-Cache und spielt dann ab der
|
||||
gemerkten Position weiter. Wenn das Telefonat länger als die Antwort
|
||||
dauerte, ist der Cache schon fertig — instant Resume.
|
||||
|
||||
## Erledigt
|
||||
|
||||
@@ -165,7 +171,6 @@ Wichtige Mechanismen:
|
||||
### App Features
|
||||
- [ ] Chat-History zuverlaessiger laden (AsyncStorage Race Condition)
|
||||
- [ ] Custom-Wake-Word-Upload via Diagnostic (eigene .onnx-Files ohne App-Rebuild)
|
||||
- [ ] Pause+Resume bei Anruf: aktuell wird der TTS-Stream bei Klingeln hart gestoppt, schoener waere Pause + Resume nach Auflegen
|
||||
|
||||
### Architektur
|
||||
- [ ] Bilder: Claude Vision direkt nutzen (aktuell nur Dateipfad an ARIA)
|
||||
|
||||
Reference in New Issue
Block a user