Das Verbinden und Trennen von Bluetooth-Geräten hat unter Windows Phone / Desktop 8.1 zu verschiedenen Ergebnissen geführt. Ich habe den Windows.Devices.Bluetooth.Rfcomm
Namespace verwendet und versucht, mehrere Geräte mit unterschiedlichen Bluetooth-Versionen / -Klassen zu verbinden.
- Version 1.2 (Klasse 1 und 2)
- Version 2.0 (Klasse 1 und 2)
- Version 2.1 (Klasse 1 und 2)
- Getestet auf Nokia Lumia 625 und Lumia 635, Dell Latitude E6500 und einem Dell Precision M6400.
Immer wenn ich versuche, eine Verbindung zu einem der 2.0- oder 2.1-Geräte herzustellen, treten Probleme auf. Wenn ich zum ersten Mal versuche, eine Verbindung zu jedem der Geräte herzustellen, funktioniert alles einwandfrei und die Verbindung wird geöffnet. Wenn ich anschließend die Verbindung schließe und das Gerät wieder anschließe, beginnt der Fehler. Während der erneuten Verbindung wird die Verbindung niemals geöffnet und der Debugger löst eine System.Exception aus:
> Message: No further data is available.
Wenn die Verbindung fehlschlägt, versuchen die Windows 8.1-Geräte weiterhin (erfolglos), selbst eine Verbindung zu den Bluetooth-Geräten herzustellen, selbst wenn meine eigene Anwendung beendet wird. Manchmal zeigt das Windows 8.1-Gerät auch das Bluetooth-Gerät als verbunden an, während das Gerät visuell anzeigt, dass es nicht mehr verbunden ist. Die einzige Möglichkeit, das Bluetooth-Gerät erneut zu verbinden, besteht darin, die Verbindung zu trennen und Bluetooth auf dem Windows-Gerät herunterzufahren / neu zu starten.
Wenn ich versuche, DeviceInformation
nach einer fehlgeschlagenen Verbindung einen neuen Anruf zu tätigen , wird das Gerät, das ich zuvor versucht habe, zurückzugeben, nicht zurückgegeben.
> Message: The service cannot be found in the specified name space.
Seltsames Ergebnis, die 1.2-Geräte funktionieren einwandfrei.
Manifestdatei:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
</m2:Device>
</m2:DeviceCapability>
Gerät auswählen:
Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));
Verbindung herstellen: (id = chatserviceid)
StreamSocket _socket;
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
Trennen:
this._socket.Dispose();
this._socket = null;
Ich habe die MSDN, Codebeispiele, Demos, Channel-9-Videos und StackOverflow recherchiert. Keine Ressource kann mir sagen, ob es Probleme mit gibt Windows.Devices.Bluetooth.Rfcomm
.
Gibt es jemanden, der diese seltsamen Ergebnisse erkennt? Mache ich etwas falsch?
UPDATE: Die Arbeit mit Windows Phone 8.1 GDR2 ist eine mögliche Lösung.
HINWEIS: Für mich und mehrere andere Personen gibt dieses Update immer noch dieselben Probleme.