Wie Ändern Sie Android Bluetooth Stack Aktivieren, A2dp Sink
Arbeite ich an einem audio-recorder-app, die mithilfe einer bluetooth-Mikrofon zum aufzeichnen von audio auf einem Android-Gerät (Nexus 7 - verwurzelt Android 4.4.2). Es ist derzeit auf HFP und alles ist in Ordnung. Das bluetooth-Mikrofon wird umgesetzt mit Bluegiga ist WT32 bluetooth-Modul + einen mic-Eingang, audio-Qualität via HFP ist nicht toll, aber es reicht für jetzt.
Allerdings hab ich jetzt versucht zu ändern, das bluetooth-Profil A2dp, da gibt es zwei Mikrofon-Eingänge (L/R) und WT32 A2dp unterstützt (Quelle). Nach viel Forschung fand ich, dass stock-Android nicht unterstützt A2dp (sink), und es ist möglich, zu modifizieren Android bluetooth stack aktivieren, A2dp (sink).
Was ich nicht verstehe ist, wie man Zugriff auf und ändern Sie den bluetooth-stack. Es wäre schön, wenn jemand mit einer Antwort in der Lage ist, zu durchbrechen-unten die Schritte, um dies zu erreichen.
Ich habe versucht nach der Antwort auf diese Frage:
Erhalten audio über Bluetooth Androidaber ich kann nicht scheinen zu finden, die entsprechende Datei zu ändern. Eigentlich, ich weiß gar nicht, ob ich bin auf der Suche in den richtigen Ordner. Ich habe durch die Geräte-Datei via Android-studio die DDMS-Datei-Explorer.
ps, ich bin noch Recht neu mit Android-app-Entwicklung, so kann ich Sie missbraucht haben einige der Terminologien und ich entschuldige mich im Voraus dafür.
InformationsquelleAutor der Frage Eu-Lee | 2014-01-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist eigentlich das, was ich versuche zu tun, für eine lange Zeit...
Der Grund, warum Sie nicht finden können, die Konfiguration-Datei ist, denn Google ersetzt den Bluetooth-stack von BlueZ mit einem neuen Stapel gebaut von Google und Broadcom. Der neue stack verwendet eine andere Konfigurationsdatei an, die ich nicht wissen, wie Sie zu basteln.
Wenn Sie meinen es ernst, die nächste Sache, die ich fand, mit zu beginnen ist die offizielle Einführung für das bluetooth-framework auf Android:
https://source.android.com/devices/bluetooth.html
InformationsquelleAutor der Antwort Avraham Shukron
So dass die obige Antwort ist nicht ganz korrekt.
Folgende ist, wie es bricht:
HAL ist der hardware abstraction layer implementiert die eigentliche Bluetooth-Zustandsautomaten in c/cpp code, der als solcher steuert er die verschiedenen staatlichen Maschinen für die A2dp, HFP, GATT, SPP, AVRCP, etc. services. Jeder dieser Dienste auch auf SMP-und ATT-Dateien für das controlling der tatsächlichen Bluetooth-server oder client-Datenbanken, und es gibt Sicherheit.
HCI, ist, wo die eigentliche Arbeit erledigt. die HAL nicht wirklich tun nichts, es fasst die komplexen Daten-Nachrichten, die gesendet entlang einer tty Seriell (entweder spi oder UART) an einem inter-Netzwerk angeschlossen, chip auf dem PCBA-durch die verwendeten Methoden in der HCI-Ebene, die gefunden werden können, in der "hinter-dem-Ohr" - Schicht in /external/bluetooth/bluedroid/Verzeichnis einer android kompilieren Stamm aus dem AOSP 4.2.2 aktuelle. - derzeit gibt es mehrere Hersteller, die diese chips, aber Sie sind meist alle Broadcom-basierte ic ' s verpackt in einem dual-oder triple-radio-Paket enthält ein wifi, Bluetooth 4.0 Smart und Bluetooth 4.0 radio.
Ist es möglich, das zu tun, was Sie versuchen zu tun, aber würden Sie brauchen, um hardware.so, und bluetooth_jni.so in ein NDK/JNI-Paket/Projekt, das geht mit apps, und registriert sich über die Anrufe von der .cpp-Dateien für jede der Bluetooth-Dienste finden Sie unter "Packages/apps/Bluetooth/jni", würden Sie dann Bearbeiten Sie die Registrierung in Ihrer NDK-Bibliothek "com_android_bluetooth_a2dp.cpp', und 'com_android_bluetooth_avrcp.cpp', als Ihre entsprechend typisierte Objekte.
Das andere Problem ist, werden Sie brauchen, um Ihre eigenen benutzerdefinierten A2DP stack, als die Android-Bluedroid stack hat nur bit ' s und Stück für Stück ist der Waschbecken Rolle implementiert, die sich im frameworks, während das A2DP-Rolle hat eine vollständige Umsetzung der Quelle Rolle. Zusätzlich, je nachdem, was Sie eigentlich zu tun beabsichtigen mit Ihrem Bluetooth A2DP-sink-Implementierung, die Sie benötigen, zu implementieren, AVRCP als auch - gemäß der Bluetooth-SIG (special interest group), gibt es inter-connectivity-Anforderungen zwischen Bluetooth-Geräten führen wird, dass die großen Probleme bei der Umsetzung Waschbecken Rolle, ohne AVRCP "remote control target device" und "remote-control-Gerät", wie die Spüle Rolle ATT Befehle von Bluetooth über A2DP (oder jeder Bluetooth-Dienst/Profil) ausführen bestimmter handshakes während der service-discovery-Prozess, wenn die zugehörige gateway ( Anschluss device ), führt eine Fähigkeiten Antrag der A2DP-service wird voraussichtlich zu implementieren i/o-Funktionen für Start-Stopp-Befehle und möglicherweise skip/track advance-Befehle.
Zusätzlich zu all dies, bei der Implementierung von A2DP müssen Sie wählen, ob Sie Umgang mit PCM-streams oder AAC-streams. Wenn Sie mit AAC-streams (oder DRM-geschützte PCM-streams für diese Angelegenheit, die so etwas wie Pandora, spotify, etc. verwendet), Sie implementieren müssen, um die SBC-Encoder oder-Decoder für Sie geeignet sind, die Umsetzung, sonst alles, was Sie haben ist ein Haufen von verschlüsselten Daten. Auch, sicher sein, zu implementieren, die bitrate, die bei der entsprechenden Geschwindigkeit für Ihre Geräte AudioManager Umsetzung, einige Telefone verwenden 48,000 hZ und einigen us-rate von 44.100 hZ, dies ist wichtig, wenn Sie wollen qualitativ hochwertige audio-wie in der Regel die meisten PCM-A2DP-Implementierungen, die unter Verwendung von Surround-Sound 7.1+ benötigen bis zu 48.000 hZ sowie AAC-Codierung/Decodierung.
Ich hoffe, dies gibt Ihnen einige Einblicke.
InformationsquelleAutor der Antwort Zach
https://android-review.googlesource.com/#/c/98161/ implementiert A2DP Sink. Es funktioniert auf dem Nexus 5. Sie können es versuchen.
InformationsquelleAutor der Antwort Wenjie Gong