Bluetooth -> service discovery failed
Ich Schreibe eine Anwendung, die in der Lage ist, die Kommunikation mit meinem PC. Ich habe die Bluetooth-Funktionalitäten der SDK 2.1.
Finde ich Geräte, deren MAC-Adresse, erstellen Sie eine RFCOMM Buchse, aber wenn ich die Verbindung starten, bekomme ich die folgende Fehlermeldung.
Service discovery failed.
- Ist es, weil der UUIDwas nicht dasselbe ist, über meinen Antrag und auf meinem PC?
- Wie bekomme ich die richtige UUID auf meinem PC?
Schreibe ich einen solchen Antrag, ist mein Nexus One dem client oder dem server?
InformationsquelleAutor der Frage Kaiser | 2010-02-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, ich hab das gleiche problem, aber ich denke, ich kann Antworten auf einige Ihrer Fragen. Wenn Ihr PC eröffnet eine SPP-Port, zum Beispiel, mit "sdptool add --channel=3 SP" Ihrem Android-Handy, würde der client das öffnen einer socket und die Verbindung mit diesem socket an den server (Ihrem PC oder einem anderen Bluetooth-Gerät, zum Beispiel, GPS, Maus, etc.).
Können Sie diese Informationen durch das Lesen der Artikel Bluetoothdie definition von einem client habe ich aus diesem Artikel.
Wenn Sie öffnen, um eine SPP-Port auf dem server (dein PC, usw.) Sie bieten eine standard-service und es gibt eine spezielle UUID, die diesem Dienst zugeordnet. Dies wäre:
00001101-0000-1000-8000-00805F9B34FB
wenn ich mich nicht Irre.Also ich denke, wir sollten eine qualifizierte Antwort von einem Android-Entwickler. Oder Fragen Sie diese Frage am Donnerstag bei der IRC-Sprechstunde.
InformationsquelleAutor der Antwort
Hinweis: Wenn Sie eine Verbindung zu einem Bluetooth-serial-board versuchen Sie, mit der bekannten SPP UUID 00001101-0000-1000-8000-00805F9B34FB. Allerdings, wenn Sie eine Verbindung zu einem Android-peer dann bitte generieren Sie Ihre eigene, einzigartige UUID.
Der Link
InformationsquelleAutor der Antwort Dev Perfecular
Obwohl es könnte Ihre UUID, würde ich auch empfehlen, die Sie stellen Sie sicher, dass die Bluetooth-MAC ist korrekt und in Großbuchstaben.
Ich würde auch vorschlagen, läuft
hcidump -X
in einem terminal auf dem Linux-box, und sehen, ob Sie können sehen, zwei-Wege-Verkehr zwischen Ihrem Linux-Rechner und Handy während des gesamten Prozesses.InformationsquelleAutor der Antwort Brad Hein
Fand ich einen Weg, um sicher zu sein, dass die UUID ist auf dem Gerät. Auf der client-Seite, bevor
device.createRfcommSocketToServiceRecord(uuid);
hinzufügen:Ist der Prozess eingefroren während 20-30 Sekunden, denn Android ist das Holen von services. Aber nach, wenn sich der server in discovery-Modus (wenn der server ein Android-Handy), gelingt die Verbindung jedes mal!
InformationsquelleAutor der Antwort Yoann
Ich hatte das gleiche problem bei dem anschließen SPP nach dem ersten verbinden.
Dies ist, weil
rfcomm channel=-1
imBluetoothService.java
. Ich fügteupdateDeviceServiceChannelCache()
zu EndefetchRemoteUuids()
und dann hat es geklappt!InformationsquelleAutor der Antwort chihying
Dies passiert meist auf HTC. Ich Stand vor dem gleichen problem. Wenn Sie zuerst die Verbindung erfolgreich hergestellt, aber nicht danach, nur starten Sie das Telefon und den Dienst, den fehlgeschlagenen Neustart dabei.
InformationsquelleAutor der Antwort AbdiT