Bluetooth "out of band" (OOB) - Kopplung auf Android?
Ich habe lange gesucht im internet und habe nicht gesehen, nichts in den Weg, wie Sie genau umzusetzen OOB-Kopplung. Ich hatte gehofft, jemand hier könnte mir einige Beispiel-code, um mir zu helfen. Der chat beispielsweise im Android-Entwickler-Website nicht wirklich Tauchen Sie ein in diese Art von pairing überhaupt.
Grundsätzlich, ich habe ein Android-tablet, dass ich möchte, um sicher zu koppeln mit einem Gerät, in C++ geschrieben, das hat keine eingebaute display/IO-Mechanismus. Das tablet gekoppelt werden, wird als GUI/IO-Schnittstelle, und ich werde senden Sie die Nachricht zurück und vierten über Bluetooth. Dadurch möchte ich sicher koppeln Sie das tablet mit jedem Gerät über das OOB-Fräsen-Schema.
Verstehe ich das Konzept von OOB, aber ich habe Schwierigkeiten, die richtigen Methoden zu nennen, wenn man auf der android.developers.com Website für mein android-client-code. Auch wenn man die bluez Zeugs kann ich nicht viel gehen für mein C++ geschriebenen server.
Die grundsätzliche Verwendung ist der Benutzer schließen Sie das tablet an das Gerät über einen USB-Anschluss. Der USB-Anschluss erleichtern die Weitergabe von Schlüsseln/mac-Adressen für jedes Gerät und verwenden Sie dann, dass Informationen-pair Bluetooth miteinander.
Ich herausfinden können, ist der USB-Teil, aber sobald ich die Schlüssel und notwendige Informationen auf dem client und server, die ich kann nicht scheinen, um die Spur zu den richtigen Methoden zu nennen, für beide enden, um erfolgreich und sicher-pair-Mädchen.
Ich habe bereits eine client/server-Gespräch über eine unsichere Verbindung, so ist das wirklich das einzige Teil, das ich Probleme habe mit ist der eigentlich Paarung an beiden enden. Als einmal ich bin gepaart, ich kann Sie verwendet eine secureRFComm, alles zu tun, um meine Zukunft messaging.
- Je nach Ihrer Android-version, Sie wird warten müssen. Siehe - android.googlesource.com/platform/frameworks/base.git/+/master/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich mein Problem zu 95% gelöst, aber ich traf eine kleine Straße zu blockieren. Zunächst werde ich update diesen post eine konkrete Antwort auf die ursprüngliche Frage und poste meine Frage am Ende.
Zur Erinnerung, meine Aufgabe ist es, out-of-band (oob) koppeln, fest-pair-Mädchen ein android-tablet mit Honeycomb 3.2 auf einem beagle-board über USB. Ich kann nicht post-spezifischen code, aber ich werde Ihnen alle erforderlichen Schritte, um dies getan.
Auf dem beagle-board, ich habe die bluez 4.96-stack installiert ist, der mit der dbusoob plugin installiert. Um dies zu bestätigen ordnungsgemäß eingerichtet ist, installieren Sie 2 Bluetooth-dongles auf dem beagle-board und führen Sie den OOB-Test-Code, der sich in der bluez-Archiv in den Ordner test. Dies ist ein python-Skript. Sollte das script erfolgreich koppeln Sie den 2 Bluetooth-dongles, wenn nicht bluez ist wahrscheinlich nicht richtig eingestellt.
Zur USB-Kommunikation mit einem tablet arbeiten zu installieren, müssen Sie mtpfs und mtp-tools. Diese dienen zu Befestigung Ihres Tablets. Sie Weise, die ich gelöst bekommen OOB-Daten zwischen 2 Geräten zu montieren, das tablet auf dem beagle-board. Einmal montiert, der tablet-und beagle-board schreiben können Sie sich eine Datei mit den erforderlichen Informationen.
Auf der android-Seite OOB ist nicht unterstützt in der öffentlichen API, also die Dinge kompliziert werden. Ich glaube, das ist, weil Honeycomb 3.2 nicht eine bluez-stack, der unterstützt offiziell OOB-Bindung, aber Google hat einige Art der Implementierung kodiert. Ich glaube, dies weil wenn Sie einen Blick auf Lebkuchen-source-code für den Bluetooth-Adapter und Bluetooth-Geräte-Klassen können Sie sehen, OOB-Methoden zur Verfügung, aber nicht ausgesetzt, die über die dokumentierten API.
Diese Methoden sind immer noch der öffentlichkeit so können Sie rufen Sie durch Reflexion. Mit der spiegelung können Sie auch alle Signaturen in einer Klasse. Dies ist, wie ich herausgefunden habe, welche Methoden ich zur Verfügung hatte, zu mir.
Aber Vorsicht, viele sind nicht dokumentiert und es ist nicht klar, was einige tun. Die wichtig zu beachten sind die readOutOfBandData() der adapter-Klasse und setDeviceOutOfandData() in das Gerät Klasse.
Anderen überraschungen, die auftreten können ist, wenn Sie schreiben, Ihre oob-Daten in eine Datei auf dem tablet gelesen werden durch den beagle-board. Seit android mtp verwendet, müssen Sie den index-Datei nach dem schreiben auf die internen sdcard-Speicher. Um dieses Problem zu lösen Sie brauchen, um Gebrauch machen von der MediaScannerConnection Klasse und die scanFile () - Methode.
Hoffentlich hilft jemand anderes mit diesem gleichen Problem.
Nun zu meiner Frage. Ich habe meine android-Anwendung funktioniert Super und meine beagle-board-code ist die testOOB Beispiel aktualisiert zu haben, ein Ende Lesen OOB-Daten aus einer Datei. Jetzt das Problem, das ich sehe ist, wenn ausgeführt, jeder sieht jeden anderen großen, aber auf dem tablet bekomme ich noch eine Meldung, die Sie fragt, ob ich möchte, um das Pairing mit Gerät xyz. Es gibt keine Schlüssel oder zahlen. Es fragt nur "Koppeln mit Gerät XYZ" oder etwas entlang jenen Linien.
Wenn ich drücken Sie "pair" es ist alles gekoppelt, von den Tabletten Sicht, ABER das python-Skript gibt, dass die Kopplung fehlgeschlagen ist. Das python-Skript auf dem beagle board ist dem Aufruf der eigentlichen Methode zu tun, die Verbindung zwischen den Geräten. Auch wenn ich die android initiieren die createBond nennen, ich sehe das gleiche Ergebnis. Ich kann garantieren, dass ich die erforderlichen OOB-Daten an beiden enden, bevor Sie versuchen die pair in beiden Fällen so, dass doesn ' T scheinen es zu sein.
So meine Probleme, ich hoffe jemand kann mir helfen, sind:
1) Warum bekomme ich sogar eine Meldung auf android, wenn die OOB-Daten ausgetauscht werden, richtig? Gibt es da noch andere nennen, ich bin fehlt, und auf welches Ende?
2) Warum braucht der beagle-board-python-Skript zurück Gemüsemesser nicht einmal dachte, dass ich drücken Sie die "pair" - popup angezeigt, auf dem tablet. Die tablet-und blues-monitor zeigen beide Geräte gekoppelt. Wieder einige ich bin Neigung in Richtung auf die Idee, dass mir etwas fehlt.
Danke an alle, die helfen können 🙂
EDIT:
Hinzufügen von mehr Informationen ist hier der logcat-Ausgabe:
Den zwei letzten Zeile scheint die Auslösung der popup auf Android entweder-Pair/Abbrechen mit dem Gerät Fragen. Ich möchte Android wissen nur auto-bond-und nicht einmal Fragen. Ich könnte fehlt eine call oder etwas aus der Reihenfolge, für alle, die ich kenne. Das Letzte, was ich in meinem code ist das erstellen der Verbindung, die scheint die offensichtliche Ort, es zu tun....
Vielen Dank für alle Vorschläge!
Gibt es keine öffentlichen APIs noch auf androind zu ermöglichen, für die OOB-Kopplung.
Es ist möglich nnly, wenn Sie können oder bereit sind, ändern Sie die zugrunde liegenden BlueZ-stack setzen Sie den OOB-Fräsen-Haken an die Anwendung. (Eine nicht triviale Aufgabe)
Was OOB-Mechanismus sind Sie plannin auf mit ? NFC ?
readOutOfBandData
, aber ich weiß nicht, entwickeln für android, so können Sie nicht überprüfen, alles.dbusoob
plugin, verwenden Sie dieorg.bluez.OutOfBand
D-Bus-Schnittstelle, check dieser test-code zum Beispiel (in python)