La conexión y desconexión de dispositivos Bluetooth ha dado varios resultados en Windows Phone / Desktop 8.1. He estado usando el Windows.Devices.Bluetooth.Rfcomm
espacio de nombres y he intentado conectar varios dispositivos con diferentes versiones / clases de Bluetooth.
- Versión 1.2 (Clase 1 y 2)
- Versión 2.0 (Clase 1 y 2)
- Versión 2.1 (Clase 1 y 2)
- Probado en Nokia Lumia 625 y Lumia 635, Dell Latitude E6500 y Dell Precision M6400.
Siempre que intento conectarme a cualquiera de los dispositivos 2.0 o 2.1, surgen problemas. La primera vez que intento conectarme a cada uno de los dispositivos, todo irá bien y la conexión se abrirá. Cuando posteriormente cierro la conexión y vuelvo a conectar el dispositivo, comienza el problema. Durante la reconexión, la conexión nunca se abrirá y el depurador lanzará una System.Exception:
> Message: No further data is available.
Además, cuando la conexión falla, los dispositivos con Windows 8.1 seguirán intentando (sin éxito) conectarse a los dispositivos Bluetooth por sí mismos, incluso cuando mi propia aplicación haya finalizado. A veces, el dispositivo Windows 8.1 también mostrará el dispositivo Bluetooth como conectado, mientras que el dispositivo muestra visualmente que ya no está conectado. La única forma de volver a conectar el dispositivo Bluetooth es desemparejarlo y apagar / reiniciar Bluetooth en el dispositivo Windows.
Siempre que intento hacer una nueva llamada DeviceInformation
después de una conexión fallida, se negará a devolver el dispositivo que intenté conectar anteriormente.
> Message: The service cannot be found in the specified name space.
Curioso resultado, los dispositivos 1.2 funcionan perfectamente.
Archivo de manifiesto:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
</m2:Device>
</m2:DeviceCapability>
Selección de dispositivo:
Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));
Conectando: (id = chatserviceid)
StreamSocket _socket;
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
Desconectando:
this._socket.Dispose();
this._socket = null;
He investigado MSDN, ejemplos de código, demostraciones, videos del canal 9 y StackOverflow, ningún recurso puede decirme si hay problemas con Windows.Devices.Bluetooth.Rfcomm
.
¿Hay alguien que reconozca estos extraños resultados? ¿Estoy haciendo algo mal?
ACTUALIZACIÓN: Trabajar con Windows Phone 8.1 GDR2 es una posible solución.
NOTA: Para mí y para varias otras personas, esta actualización aún presenta los mismos problemas.