2016-08-31 13 views
4

私はBLEデバイスをスキャンできるWindowsの電話アプリで作業しています。私は希望のデバイスを表示しているロジックを実装しています。利用可能な/存在するBluetooth低エネルギー(BLE)デバイスをスキャンする方法はありますか?

しかし、問題は、私がそれらのデバイスを削除するか、それらをオフにすると、私のアプリケーションがスキャン結果でその名前を返すということです。キャッシュされた結果が戻ってくると思います。どのように私はそれが利用可能/存在するデバイスだけを表示することを確認することができます。

私はスキャンでSystem.Devices.Aep.IsPresentなどの追加プロパティを使用しようとしましたが、利用可能なデバイスに関係なく結果にnullが表示されています。ここで

は、私が使用していたコードスニペットです -

string[] requestedProperties = new string[] { "System.Devices.Aep.IsPresent" 
                 , "System.Devices.Present" 
                 , "System.Devices.Connected" 
                 , "System.Devices.Paired" 
                 , "System.Devices.Aep.IsConnected" 
                 , "System.Devices.AepContainer.IsPresent" 
                }; 

diCollection = await DeviceInformation.FindAllAsync(GattDeviceService.GetDeviceSelectorFromUuid(serviceUuid) 
               , requestedProperties 
               ); 

foreach (var diItem in diCollection) 
{ 
    Debug.WriteLine("Discovered Device name - " + diItem.Name); 
    Debug.WriteLine("Discovered Device Additional Properties Below"); 

    foreach (var item in diItem.Properties) 
    { 
     Debug.WriteLine("Key-{0} Value-{1}", item.Key, item.Value); 
    } 
} 

をここで使用Package.appxmanifest能力である -

<Capabilities> 
    <Capability Name="internetClientServer" /> 
    <DeviceCapability Name="bluetooth" /> 
</Capabilities> 

私はこの小さな問題を解決してください。私はここで何か些細なことを逃していますか?

ありがとうございます。

+0

このクラスを使用してみましたか?https://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.advertisement.bluetoothleadvertisementwatcher.aspx? – Emil

+0

こんにちはEmil、私はそれを試していないが、私はこのクラスが私が使用しているWindows Mobile 8.1 APIで利用できないことがわかります。私はこれがUWPプロジェクトに存在することがわかりますが。 – Jkm

+0

このJkmを解決できましたか? – user3141326

答えて

1

-Jitender私は両方のハンドヘルドにペアリングし、一方のみがオンし、Windowsハンドヘルド8.1た2パソコンで以下の特性の一つ一つのいずれかを試みました。

https://docs.microsoft.com/en-us/windows/uwp/devices-sensors/device-information-properties

必要なものは(たとえ列挙は使用できません)のWindows Phone 8.1でサポートされているいずれもAssociationEndpoint関連のプロパティ、だった - ので、基本的にAPIは、私たちができるようにするにはどのような方法を提供していません。それらが現在使用可能であるかどうかについてのキャッシュからの接続を照会する。

すべての組み合わせでテストしましたが、十分な情報が得られません(オンになっているPCはそうでないものと見分けがつきません)。

唯一の回避策は、キャッシュ上のすべてのペアのコンピュータに接続し、各接続が成功した場合に、表示されたリストにこれが追加されたかどうかを確認することでした。すべての失敗した接続には4〜5秒かかります。過去に複数のペアになっているコンピュータがある場合、リストを表示するにはかなりの時間がかかることがあります。しかし、私はこれを確認する他の実行可能な方法を見つけることができませんでしたが、少なくともこれが問題を解決します。

+0

P.S:@Jkm - 私はあなたがBluetooth LEについての元の質問をしていることを知っています。これですぐにあなたの質問に答えることはできませんが、この問題に恩恵を与えるのは悪いですが、私たちが見ている問題は現在の接続とキャッシュされた接続を区別できないという同じ問題です。キャッシュされた接続の数が実現可能な限り、問題が発生します。 – user3141326

関連する問題