Streamen Sie audio, um einen Anruf auf Android
Ich bin versucht, senden Sie eine audio-stream über einen Anruf auf Android.
Zum Beispiel, um eine app zu erstellen, die spielen würden, einige benutzerdefinierte on-hold Musik, oder einen Anruf zu beantworten, und spielen Sie ein Aufnahme - /audio-Datei. Ich weiß, es ist möglich, eine app automatisch einen Anruf zu beantworten, aber es kann senden von audio an den Aufrufer?
Wenn es möglich ist, bitte lassen Sie mich wissen, welche Klassen/Funktionen umgehen können.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schreiben auf das Telefonat stream IST möglich, aber nicht aus dem app-Ebene auf eine Aktie (nicht verwurzelt) Tel.
Wenn ein Anruf initiiert wird das mic ist "typisch" (hängt wirklich von der spezifischen Telefon) weitergeleitet, die direkt auf das Basisband, dh das überspringen der Haupt-Prozessor zusammen.
Für ausgehende audio: mic->codec->Basisband
Für eingehende audio: Basisband->codec->Lautsprecher
Wenn es immer weitergeleitet: mic->codec->mainprocessor->codec->Basisband
Dann der stream würde "vermutlich" zur Verfügung, wenn die Android-APIs (frameworks) unterstützt, auf Sie zuzugreifen.
Der Grund, warum ich sagen, es ist möglich ist, weil die audio - (für fast alle smartphones jetzt) angeschlossen ist, über SlimBus Dies ermöglicht das dynamische ändern von audio-Pfade. Es ist aber in der kernel über den codec-Treiber Leben in ALSA.
So.... waren Sie so motiviert, man konnte die Quelle für den Linux kernel für ein Handy und ändern Sie den codec/ALSA-Treiber können Sie ändern, was passiert, wenn die Anruf-audio-Pfad eingerichtet ist.
Natürlich dann würden Sie entstehen Wartezeit mit dem neuen Pfad, brechen Sie die Anruf - /Latenz-standards von AT&T setup (das Publikum geholfen, Sie zu schreiben...) und die Basisband-chip kann ablehnen, Ihre audio -, wie es nicht rechtzeitig.
Schließlich müssten Sie ändern, die Android-Quelle (frameworks) zu wachsen, die API zu unterstützen Injektion audio auf dem stream. (Würden Sie brauchen, um große mods zu Medienservers audioflinger insbesondere...)
Es ist kompliziert, aber es ist Ihre Antwort. Cheers, 🙂
Erfassung der remote-audio-submix benötigt die CAPTURE_AUDIO_OUTPUT Berechtigung. Diese Berechtigung ist reserviert für den Einsatz von system-Komponenten und ist nicht verfügbar, um Anwendungen von Drittanbietern:(
Um die audio-Daten ist sehr gut möglich, aber zum schreiben von audio zu upstreaming-Kanal, das ist nicht möglich
Muss dies möglich sein, da die Telefone ermöglichen die Bluetooth Funktechnik zum senden von audio ein Mikrofon.
Da ich dieses problem zu lösen, eine Idee, die ich habe, ist im wesentlichen das senden eines bluetooth-Signals zu mir selbst, "getarnt" als ein Mikrofon-Eingang.
Andere Idee (Entschuldigung falls es nervt) ist eine Umkehrung der Lautsprecher wie ein Mikrofon. Da es scheint, der Referent hat Zugriff auf die hardware erforderlich ist, kann es ein Weg sein, um zu injizieren, die audio-Daten-stream so.
Da bin ich ganz neu Codierung auf Androiden mit der SDK-bitte entschuldigen Sie die anfänglichen botchery von diesem post, ich werde aktualisieren, wie ich/wir dies herausfinden.
Schreiben-Telefon-Anruf-stream ist leider nicht möglich.