★【 My Biz Blog 】★

興味のあるビジネス情報を伝えていきます♪
(IoT,Azure,Windows 10, etc...)

Windows 10とBeacon(2)

2015-05-07 20:24:25 | Windows 10
※Windows 10 Insider Preview時点の情報を基に書いているので、
 正式リリースされた際には変わっている可能性もありますのでご注意ください。


Beaconのサンプルアプリのソースを少し解析したので、その備忘録。

ユニバーサルアプリでは、Bluetooth LEのアドバタイズメントパケットを受け取ったことを
簡単に認識できるようになってました。

使用するクラスは、Windows.Devices.Bluetooth.Advertisement.BluetoothLEAdvertisementWatcher。
その名の通り、アドバタイズメントパケットを監視してくれます。

処理の流れは、
 1. BluetoothLEAdvertisementWatcherオブジェクトの生成
 2. フィルターを設定(任意)
 3. イベントハンドラ登録
 4. 受信開始
 5. イベントハンドラで受信データを処理
というような感じ。


BluetoothLEAdvertisementFilterクラスにより、
特定のBeaconからのパケットを受け取るようにするために、
フィルターの設定が可能です。
このフィルターでは、企業IDやUUIDを指定できます。

※サンプルアプリでは企業IDに0xFFFE、UUIDに0x1234が設定されているので、
 手持ちのBeaconで試すときはフィルター処理を外してビルド・実行してみてください。

※自分はApplix社から購入したBeaconを試してみたのですが、購入したBeaconの企業IDは0x004Cになってました。
 0x004CはApple社ですかね。もしかしてiBeacon認定を受けたものは0x004Cになってるんでしょうか。
 不勉強ですみません。後日調査します(汗)。


また、BluetoothSignalStrengthFilterクラスにより、
RSSI値によるフィルタリングもできるようです。
In-RangeとOut-Rangeの閾値設定が可能です。


アドバタイズメントパケットの受信したら、登録したイベントハンドラに処理が渡されます。
イベントハンドラの登録はBluetoothLEAdvertisementWatcherクラスのRecievedイベントに
イベントハンドラ関数を設定するだけ。
サンプルアプリのソースコードでは以下のように記述されています。

watcher.Recieved += OnAdvertisementRecieved;


アドバタイズメントパケットの受信開始は、
BluetoothLEAdvertisementWatcherクラスのStart関数を呼ぶだけ。

サンプルアプリの受信イベントハンドラの処理は、
受信日時やRSSI、企業ID、UUIDの表示を行っています。
これらのデータはイベントハンドラの第2引数BluetoothLEAdvertisementRecievedEventArgsから取得できます。