Android Bluetooth - keine Verbindung hin
Ich entwickle eine Anwendung, die Bluetooth-Verbindung zu einem Gerät und senden/empfangen von Daten. Ich mache alle meine Tests mit einem Nexus One Handy.
Habe ich nie in der Lage, zum herstellen einer SPP (serial port) Anschluss von meinem Handy zu einem Gerät. Aber ich haben in der Lage gewesen, eine Verbindung von einem Gerät (mein Notebook) auf mein Handy mit einem Mac-äquivalent von Kitt (Die einzige Ausnahme ist die "Bluetooth File Transfer" app aus dem Marketplace scheint zu funktionieren, aber ich glaube nicht, dass verwendet RFCOM/SPP...).
Sehe ich diese Nachricht in meinem LogCat logs:
ERROR/BluetoothService.cpp(78): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
sowie diese:
java.io.IOException: Operation Canceled
java.io.IOException: Software caused connection abort
Ich habe versucht mit der UUID "00001101-0000-1000-8000-00805F9B34FB" und ich habe auch versucht, mit Hilfe der:
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
sock = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
Methode statt device.createRfcommSocketToServiceRecord(UUID);
als auch--mit kein Glück.
Ich bin mit dem BluetoothChat-Beispiel und Variationen von code zu tun, alle meine Tests...
Lösungen oder Anregungen wäre toll...oder sogar noch besser/weniger Komplexes Beispiel für einige Tests code, den ich ausführen kann, auf dem Handy, oder ein python-Skript oder etwas ich kann auf meinem computer zu Debuggen?
Dank! Ich hoffe, dies ist kein bug mit dem Android OS, aber wenn es ist ich hoffe, dass ich einen workaround finden.
EDIT: ich sollte auch beachten, dass die meisten Geräte zeigen sich als "gepaart, aber nicht verbunden" in den Bluetooth-Einstellungen.
EDIT 2: Die Lösung scheint zu sein, einfach deaktivieren Sie alle Bluetooth hören. Siehe mein Antwort-post für weitere Informationen.
haben Sie bei der Reflexion mit Absicht oder durch Zufall? Der Grund warum ich Frage ist, ich Frage mich, wenn Sie es als eine Art zu arbeiten, um einen bestimmten Fehler in der Bluetooth-Implementierung? Normalerweise würde ich denken, man hätte nur
BluetoothSocket bs = createRfCommSocket(...
. Danke!Es war Absicht, denn ich habe gesehen, dass mehrere Leute online Probleme mit createRfcommSocketToServiceRecord die nur aufgelöst durch die Nutzung dieser ungewöhnliche Abhilfe. Siehe: stackoverflow.com/questions/2660968/... ---- stackoverflow.com/questions/2661932/...
InformationsquelleAutor idolize | 2010-06-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Lösung, wie es sich herausstellt, war das deaktivieren des server-Funktionalität des Bluetooth-Dienstes. Nur mit
createRfcommSocketToServiceRecord
und nie AnrufelistenUsingRfcommWithServiceRecord
(in der BluetoothChat-Beispiel bedeutet dies nie ab "AcceptThread") war das problem behoben.Obwohl diese beiden Aufrufe werden soll, völlig getrennt und haben keinen Einfluß auf einander (nach dem Android-docs), einfach auskommentieren
listenUsingRfcommWithServiceRecord
meine Feste vermeintlich nicht verwandten Problem.Ich kann die Bluetooth-Chat-Programm-ungeschnitten und es wird nicht in der Lage, zum herstellen einer ausgehenden Verbindung zu JEDEM bluetooth-Gerät, das ich getestet habe (laptops, Desktop-PCs, headsets, etc.), aber wenn ich entfernen, das ist eine Sache, es funktioniert einwandfrei als client.
Sowieso, ich hoffe, dass dies jemand anderes helfen, wenn Sie über das gleiche Thema. Das muss ein bug mit dem Android OS, oder eventuell auch die firmware auf dem Nexus One.
Hier gilt das gleiche, hat nicht funktioniert. Mit der gleichen Beispiel und Nexus S +Galaxy tab
Die Deaktivierung der überwachung von verbindungen macht es nicht für mich arbeiten. Wie würde das überhaupt funktionieren?... Ich bekomme dieses Problem gelegentlich, aber macht es nicht starten-accept-thread macht es konsequent nicht arbeiten.
InformationsquelleAutor idolize
Ich würde ignorieren, die stopDiscovery Fehler - gut, dass Sie Abbrechen Entdeckung, bevor Sie Ihre Verbindung. Pro SDK-docs:
Also mit dieser sagte, waren Sie in der Lage, um die Bluetooth-Chat-Beispiel zu arbeiten, bevor du irgendwelche änderungen an den code?
Die UUID, die Sie wollen für SPP/RFCOMM ist:
definierten oder auf andere geeignete Weise (beide das gleiche erreichen).
Hast du explizit hinzufügen einer RFCOMM-Dienst auf Ihrem computer? Anders der computer hat keinen Grund zu reagieren, um RFCOMM-Anfragen. So wie dein computer würde nicht reagieren auf FTP-Anforderungen, es sei denn, man installiert einen FTP-server und port 21 geöffnet.
Ich bin verwirrt - sind u versuchen, um die bluetooth-chat-Arbeit zwischen zwei Handys oder zwischen Handy und PC? Ich denke, dass nur die ehemalige macht Sinn, aber ich kann nicht verstehen ist Ihr Ziel. Können Sie das klären?
Ich habe nicht zwei Android-Handys zu testen, aber ich habe getestet mit zwei PCs (mit PuTTY unter windows und Terminal auf mac) sowie eine spezielle headset-Gerät, das über SPP. Es war nicht es funktioniert, wie ein client auf einen von Ihnen (nur als server). Ich habe das Problem jetzt, wie angegeben durch meinen post.
InformationsquelleAutor Brad Hein