2016-09-20 127 views
2

UWPアプリケーションで使用されているBLEデバイスからWindowsを切断する方法を教えてください。私はいくつかの特性から通知を受け取りますが、BLEデバイスのバッテリを節約するためにBLEデバイスから切断することを確実にしたいと思っています。Windows BLE UWP disconnect

答えて

0

デバイスに関連するすべてのオブジェクトを破棄するだけです。他のアプリが接続されていない限り、デバイスの接続が切断されます。あなたはすでにあなたのBLE周辺に接続されている場合はお電話の場合は、

GattCharacteristic myGattchar; // The gatt characteristic you are reading or writing on your BLE peripheral 
GattDeviceService myGattServ; // The BLE peripheral' gatt service on which you are connecting from your application 
BluetoothLEDevice myBleDev; // The BLE peripheral device your are connecting to from your application 

:アプリケーションがGATTクライアントとして動作していると、あなたがあなたのコード内で作業している以下のインスタンスを持っていると仮定すると

0

このような方法:

myBleDev.Dispose();および/またはmyGattServ.Dispose();またはmyGattchar.Service.Dispose()

あなたは確かにあなたのアプリケーションのリソースを解放しますが、BLE接続をきれいに閉じることはできません。アプリケーションは接続の制御リソースへのアクセスを失います。それにもかかわらず、スタックの下位レベルで接続が確立されたままになります(Dispose()メソッドのいずれかをコールした後に、 LEDがオンのままになっているBluetooth周辺機器上のBluetooth 接続)。切断を強制

は、最初のパラメータでメソッドWriteClientCharacteristicConfigurationDescriptorAsyncへの呼び出しを介して、その特性をClient Characteristic Configuration descriptorに0(ゼロ)を書き込むことにより、当該特性(上記の私の例では、すなわちmyGattchar)に通知し、指示を無効にすることによって行われますGattClientCharacteristicConfigurationDescriptorValue.None:私のUWPアプリの

GattCommunicationStatus status = 
await myGattchar.WriteClientCharacteristicConfigurationDescriptorAsync(
GattClientCharacteristicConfigurationDescriptorValue.None); 
+0

これは、MicrosoftのUWP BLEサンプルが行うべきことです。それは私にとってはうまくいかない。 –

0

、私は廃棄()メソッドを使用したにも関わらず、私はまだ通知を受け取りました。デバイスと特性をnullに設定するのに役立ったのは何か。例:

device.Dispose();

device = null;

このプログラミングがどのように「正しい」かは必ずしも明確ではありませんが、これまでのところうまく機能しています。