Підключення та відключення від пристроїв Bluetooth дало різні результати на Windows Phone / Desktop 8.1. Я використовую Windows.Devices.Bluetooth.Rfcomm
простір імен і намагався підключити кілька пристроїв з різними версіями / класами Bluetooth.
- Версія 1.2 (класи 1 та 2)
- Версія 2.0 (Класи 1 та 2)
- Версія 2.1 (Класи 1 та 2)
- Перевірено на Nokia Lumia 625 та Lumia 635, Dell Latitude E6500 та Dell Precision M6400.
Щоразу, коли я намагаюся підключитися до будь-якого з пристроїв 2.0 або 2.1, виникають проблеми. Перший раз, коли я намагаюся підключитися до кожного з пристроїв, все піде нормально, і зв’язок відкриється. Коли згодом я перериваю з’єднання та знову підключаю пристрій, проблема починається. Під час повторного підключення з'єднання ніколи не відкриється, і налагоджувач видасть System.Exception:
> Message: No further data is available.
Крім того, коли з’єднання не вдається, пристрої з Windows 8.1 намагатимуться (безуспішно) підключатись до пристроїв Bluetooth самостійно, навіть коли мою власну програму припинено. Іноді пристрій Windows 8.1 також відображатиме пристрій Bluetooth як підключений, тоді як пристрій візуально показує, що він більше не підключений. Єдиний спосіб повторного підключення пристрою Bluetooth - це від’єднати його та вимкнути / перезапустити Bluetooth на пристрої Windows.
Всякий раз, коли я намагаюся зробити новий дзвінок DeviceInformation
після невдалого з'єднання, він відмовиться повернути пристрій, який я раніше намагався підключити.
> Message: The service cannot be found in the specified name space.
Дивний результат, пристрої 1.2 працюють ідеально.
Файл маніфесту:
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<m2:Function Type="serviceId:00001101-0000-1000-8000-00805F9B34FB"/>
</m2:Device>
</m2:DeviceCapability>
Вибір пристрою:
Guid RfcommChatServiceUuid = Guid.Parse("00001101-0000-1000-8000-00805F9B34FB");
await DeviceInformation.FindAllAsync(RfcommDeviceService.GetDeviceSelector(RfcommServiceId.FromUuid(RfcommChatServiceUuid)));
Підключення: (id = chatserviceid)
StreamSocket _socket;
RfcommDeviceService service = await RfcommDeviceService.FromIdAsync(deviceInformation1._id);
await _socket.ConnectAsync(service.ConnectionHostName, service.ConnectionServiceName);
Відключення:
this._socket.Dispose();
this._socket = null;
Я досліджував MSDN, зразки коду, демонстраційні відео, відео каналу 9 та StackOverflow, жоден ресурс не може сказати мені, чи є проблеми з Windows.Devices.Bluetooth.Rfcomm
.
Хтось визнає ці дивні результати? Я щось роблю не так?
ОНОВЛЕННЯ: Можливим рішенням є робота з Windows Phone 8.1 GDR2.
ПРИМІТКА. Для мене та деяких інших людей це оновлення все ще видає ті самі проблеми.