Bluetoothデバイスへの接続と切断は、Windows Phone / Desktop8.1でさまざまな結果をもたらしています。Windows.Devices.Bluetooth.Rfcomm
名前空間を使用していて、Bluetoothのバージョン/クラスが異なる複数のデバイスを接続しようとしました。
- バージョン1.2(クラス1および2)
- バージョン2.0(クラス1および2)
- バージョン2.1(クラス1および2)
- Nokia Lumia625およびLumia635、Dell Latitude E6500、およびDell PrecisionM6400でテスト済み。
2.0または2.1デバイスのいずれかに接続しようとすると、問題が発生します。初めて各デバイスに接続しようとすると、すべてが正常に機能し、接続が開きます。その後、接続を閉じてデバイスを再接続すると、問題が発生します。 再接続中、接続は開かれず、デバッガーはSystem.Exceptionをスローします。
> 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.1GDR2での作業は可能な解決策です。
注:私自身と他の何人かの人々にとって、このアップデートでも同じ問題が発生します。