aktuelle Anfragen

Archivierte Anfrage zur App Programmierung

Dieses Projekt ist bereits archiviert. Wenn Sie selbst an der Entwicklung eines Apps interessiert sind, können Sie eine Anfrage aufgeben:
Anfrage zur App Entwicklung stellen

Die derzeit aktuellen Projekte finden Sie unter: Aktuelle Anfragen

Wenn Sie selbst Entwickler von Apps sind, können Sie sich als Entwickler registrieren



Audio-Daten (PCM) in einem Android-Gerät abfangen (ID 2147)

Projektbeschreibung Guten Tag,

ich habe eine konkrete, nicht einfache Anforderung für einen erfahrenen NDK-Entwickler:


Vor gut einem Jahr habe ich mir vorgenommen eine Android-App zu schreiben, mit welcher sämtliche ausgehenden Audio-Daten (PCM) von einem Android-Gerät abgefangen werden kann.
Es soll im Anschluss mit der App möglich sein die Daten z.B. an kabellose Lausprecher (AirTunes) zu streamen.

Damit ist mindestens der STREAM_MUSIC gemeint, damit man die Musik-App seiner Wahl weiterhin verwenden kann.
Das Ziel ist nicht, einen Player zu schreiben welcher z.B. MP3s abspielt und überträgt (das gibt es bereits).

Das Problem ist aber, dass es bisher nicht möglich ist an diese Audio-Daten heran zu kommen.


Meine bisherigen Versuche:

alle mir erdenklichen Varianten im Android-SDK (Java)
Implementierung/Wrappen von "/dev/snd/pcmC0D0p" (das war in ICS das Standard-Ausgabe-Gerät für "TinyAlsa", mittlerweile dynamisch!) mit Hilfe eines Loadable Kernel Modul (LKM)
Implementierung von "/dev/snd/pcmC0D0p" im Userspace via FUSE (in Android dabei)
Hooking/Interception von /system/lib/libtinyalsa.so bzw. /system/lib/libaudioflinger.so via ELF/GOT-Hook


Und bin jeweils zu folgendem Resultat gekommen:

keine Chance, es existiert keine API um Audio von einem anderen Gerät außer dem Mikrofon aufzuzeichen
Das LKM hat funktioniert, ich konnte die MMAP-Methode des ursprünglichen Gerätes wrappen und die Daten abgreifen. Problem: Extrem umständlich ohne Kernel-Kenntnisse, pcmC0D0p nicht fest, als LKM nicht publizierbar -> Kernel-basierte Lösungen werden hiermit ausgeschlossen!
In FUSE lassen sich leider keine Character Devices implementieren, dafür braucht es CUSE (das wiederum nicht implementiert ist in Android)
Das Hooken eigener Shared Libraries hat funktioniert (ELF/GOT wird in /proc/pid/maps gesucht), aber es scheint bei den System-internen nicht zu funktionieren (evtl. durch RELRO in Android 4.1 nicht mehr möglich)



Ich habe sehr gute Kenntnisse in Java und ähnlichen Programmier-Sprachen, aber C gehört leider überhaupt nicht dazu.
Es hat mich sehr viel Zeit gekostet das Kernel Modul zu implementieren - für einen mit soliden C-Kenntnissen wäre es sich leicht gewesen.


Meine Anforderungen:

ein Code-Stück oder Programm welches den rohen PCM-Sound welcher z.B. durch Musik-Player oder Spiele erzeugt wird, bspws. nicht blockierend in eine FIFO/Pipe schreibt
es muss mindestens STREAM_MUSIC abgefangen werden - an Mitschnitten von Telefon-Gesprächen habe ich kein Interesse
das Programm muss auf einem Windows-Rechner mithilfe von Android-NKD (ndk-build) kompilierbar sein
es muss auf ARM-Modellen funktionieren
der Puffer kann klein sein -> was nicht abgeholt wird, wird verworfen
es muss kein Resampling gemacht werden -> diesen Teil habe ich bereits implementiert
es darf von einem gerooteten Gerät ausgegangen werden
es darf von Android 4.2.1 (Jelly Bean) ausgegangen werden und damit das neueste NDK verwendet werden


Mein Test-Gerät ist ein gerootetes Samsung Galaxy Nexus mit Android 4.2.1.

Mein Einsatz:

Ich biete demjenigen, welcher mit oben genannte Anforderungen erfüllen kann bis zu 250€ (je nach Umfang der erbrachten Leistung).
Für eine Entwicklung welche keine Root-Rechte benötigt bis zu 300€.

Ich beanspruche keine ausschließlichen Nutzungs-Rechte, möchte jedoch nicht gezwungen sein den Quell-Code zu veröffentlichen (wie z.B. GPL).
Ich habe noch keine kommerziellen Absichten geplant, vorerst möchte ich es "erst mal hin bekommen".

OS android

Veröffentlicht am15.01.2013
Angebotsfrist bisk.A.

Anfrager deaktivieren die Anfrage selbst, wenn ein Entwickler gefunden wurde

geplanter Endtermin k.A.

geplantes Budget € 300
Investitionsbereitschaft zunächst nur Preisanfrage

Sitz des Auftraggebers: 76199 Karlsruhe.

Der Standort des App Entwicklers ist für den Auftraggeber nicht relevant.



aktuelle Anfragen