Windows Phone / Desktop 8.1에서 Bluetooth 장치에 연결 및 연결 해제하면 다양한 결과가 나타납니다. 나는 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을 throw합니다.
> Message: No further data is available.
또한 연결이 실패하면 Windows 8.1 장치는 내 응용 프로그램이 종료 된 경우에도 계속해서 Bluetooth 장치에 연결을 시도합니다 (실패). 때때로 Windows 8.1 장치는 Bluetooth 장치가 연결된 것으로 표시되는 반면 장치는 더 이상 연결되지 않은 것으로 시각적으로 표시합니다. Bluetooth 장치를 다시 연결하는 유일한 방법은 페어링을 해제하고 Windows 장치에서 Bluetooth를 종료 / 다시 시작하는 것입니다.
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로 작업하는 것이 가능한 해결책입니다.
참고 : 나 자신과 다른 여러 사람에게이 업데이트는 여전히 동일한 문제를 제공합니다.