2017-10-30 24 views
1

最後のプロジェクトでは、私はBLEプラグインを使用します。Xamarin.Forms - 任意のデバイス接続が失われた

adapter.DeviceDiscovered += (s, a) => 

    { 
     myDeviceList.Add(a.Device); 
    } 

     await adapter.StartScanningForDevicesAsync(); 

enter image description here

しかし、今、私はただのデバイスを探して、あなたがこのリストに直接見つけるものを追加しています。

このスキャンを継続して行いたいデバイスがあれば、自動的に削除することができます。

BLEにはStartScanningForDevicesAsyncクラスがありますが、これが私にとって有用かどうかはわかりません。

event EventHandler<DeviceErrorEventArgs> DeviceConnectionLost; 
     // 
     // Summary: 
     //  Occurs when a device has been disconnected. This occurs on intendet disconnects 
     //  after Plugin.BLE.Abstractions.Contracts.IAdapter.DisconnectDeviceAsync(Plugin.BLE.Abstractions.Contracts.IDevice). 

これは可能ですか?

+0

との通信に使用する関数に注意してください - BLEスキャンは非常に高価な手順ですが電池のために。ガイドラインでは、わずかな時間間隔でのみデバイススキャンを開始することをお勧めします(たとえば、アプリでは15秒を使用します)。あなたのデバイスをタイマーでスキャンするようアドバイスすることができます。例えば、毎分10秒(少なくとも、これらの値から開始して将来調整することができます) – Miamy

+0

@Miamyアドバイスをいただき、ありがとうございます。 1分ほどスキャンしたい場合は、どのようなコードを使用しますか? 30秒ごとにスキャン機能を呼び出すには、Task.Delay(30000)を待ちます。コマンドを使用しましたが、今回はスキャン機能が起動しません。 –

答えて

0

私は、あなたがこの(擬似コード+ C#の)のようなものを使用することができると思う:ここでは

StartTimer(TimeSpan.FromSeconds(30), 
      () => 
      { 
       if (!isScanning) 
       { 
        new Handler().PostDelayed(StopScan, 10000); // stop 
             scanning after 10 sec 
        isScanning = true; 
        StartScan(); 
       } 
       return true; // this result will tell to fire onTimer event again 
      }); 

STARTSCANとStopScan - あなたはBLE

関連する問題