2012-05-11 11 views
27

Ich habe an einem Projekt gearbeitet, das von Call-Stream-Änderung profitieren würde. Dies wurde wiederholt als unerreichbar angenommen, da die meisten Leute glauben, dass die Hardware-Schleife für das In-Call-Audio vollständig von der Haupt-MCU des Geräts getrennt ist.Anruf-Audio-Stream-Änderung in Android 4.0 ICS

Fragen wie Stream audio to a phone call Android haben Antworten erhalten, die besagen, dass es unmöglich ist, auf das Audio zuzugreifen. Ich stimme zu, dass dies in der Android-API definitiv nicht möglich ist, aber es ist völlig unklar, ob die Hardware AKTUELL vollständig getrennt ist. Der stackoverflow-Benutzer 'artsylar' sagte, dass sie die 'Framework-Schicht' des Android-Betriebssystems modifizieren könnten, um aufgezeichnete Audiodaten in Anrufströme zu injizieren, was ein großer Fortschritt wäre (siehe Play an audio clip onto an ongoing call, artsylars Kommentar zur ausgewählten Antwort)). Wenn man davon ausgeht, dass der Erfolg von artsylar stimmt, gibt es definitiv eine Möglichkeit, den Audiofluss im Call-Stream zu steuern, indem das Framework modifiziert wird (ich nehme das Telefonie-Basis-Framework in der Android-Quelle an).

Grundsätzlich stimme ich völlig zu, dass das Ändern oder Steuern des Call-Stream aus der Anwendungsschicht unmöglich ist. Ich bin jedoch daran interessiert, das Android OS in Framework oder Radio Interface Layer anzupassen; Artsylar scheint Erfolg gehabt zu haben, aber es gibt keine Erklärung in der Open-Literatur darüber, wie. Angesichts des aktuellen Stands der Android-Technologie, könnte jemand die oben genannten klären, ob die Kontrolle von Audio-Anruf ist möglich durch die Änderung der Kern Android OS, und einen guten Weg, um dieses Ziel zu erreichen?

Ich glaube, dass eine endgültige Klärung dieses Problems für die Open-Source-Community von großem Wert sein würde.

Danke!

+1

Haben Sie es geschafft, den Anruf-Stream zu ändern? – B770

+1

Wie ist der aktuelle Stand Ihrer Forschung? –

Antwort

5

Es ist sehr schwierig, dies zu tun, da es sich um die Handhabung des Linux Kernals innerhalb des Android OS handelt.

Nicht nur gibt es keine API-Unterstützung, aber auch das Sicherheitsproblem ist nicht erlaubt.

Als ein Fachmann in der Software-Engineering-Bereich vor allem die Programmierer, wir nie davon ausgehen, jemandes Erfolg auf Erfindung und das zugehörige Projekt gültig ist, bis das Projekt getestet wird.

Streaming

Auch die Audio während des Gesprächs die Frage der Privatsphäre und Sicherheitsproblem unter den Smartphone-Nutzern und die Service-Anbieter von Telefonie

+1

Linux-Kernel? Nein. Hardware-Unterstützung ist auch wichtig, weil Telefone (Mic -> Basisband-Prozessor, Mikrofon -> OS) Dual-Kette verwenden, und nicht (Mikrofon -> OS -> Basisband, wie es zu erwarten ist). –

+0

@ Kagali-San, wenn Sie sagen, dass es wie "Mikrofon -> Basisband-Prozessor" ist, dann, wie Bluetooth-Headsets funktionieren? Also ich glaube nicht, dass du recht hast, es ist mehr wie "Mikrofon -> OS -> Basisband". –

+3

@ André, es ist wenig dokumentiert, aber nein - Bluetooth-Übertragungen funktionieren auch über On-Chip-Übertragungen. Sie können ein paar Datenblätter und Blockschemata/Diagramme von chinesischen MT6575, MT6589 und entsprechenden Funkchips googeln MT6627, MT6627 - Ich vermute, dass MRGPCM-Kanal zwischen den Chips Audio-Übertragungsweg ist. Es gibt auch etwas namens DAIBT, das chinesische Leute bei einigen Schemata verwenden, um Klangverarbeitungsteile zu bezeichnen. Mehr zu sagen, einige Telefone sind nicht Spiegelung sogar Mikrofon Audio an Basisband in Anruf gesendet. –

11

Es ist technisch möglich zu injizieren Audio in den Sprachanruf Uplink auf einigen Plattformen (Qualcomm kann aufrufen MSM8960 und APQ8064 zum Beispiel). Unterstützung besteht auf der Hardwareebene und auf der Gerätetreiberebene. Um diese Funktionalität jedoch für normale Anwendungen verfügbar zu machen, müssen Sie ein benutzerdefiniertes Android-ROM erstellen, in dem Sie alle erforderlichen Teile für den Benutzerbereich in den Java-Layern und den nativen Schichten von Android hinzugefügt haben.

Also die kurze Antwort lautet: Nein, es gibt keine Standardmethode, dies als App-Entwickler zu tun (spielt keine Rolle, wenn Sie SDK oder NDK verwenden).
Wenn Sie für einen OEM arbeiten oder auf andere Weise in der Lage sind, Ihre eigenen Android-ROMs zu erstellen und zu flashen, können Sie die Informationen, die Sie benötigen, wahrscheinlich von Ihrem Plattformanbieter erhalten.