Eddystone-UID を送信するビーコンを監視する場合、リージョンは次のように設定する必要があります。
Identifier eddystoneNamespaceId1 = Identifier.parse("0x00000000000000000001");
Identifier eddystoneNamespaceId2 = Identifier.parse("0x00000000000000000002");
Region eddystoneUidRegion1 = new Region("eddystoneUidRegion1",
eddystoneNamespaceId1, null, null);
Region eddystoneUidRegion2 = new Region("eddystoneUidRegion1",
eddystoneNamespaceId2, null, null);
beaconManager.setRangeNotifier(this);
beaconManager.startMonitoringBeaconsInRegion(eddystoneUidRegion1);
beaconManager.startMonitoringBeaconsInRegion(eddystoneUidRegion2);
この例では、2 つの異なるリージョンが定義され、それぞれが 10 バイトの異なる Eddystone-UID 名前空間識別子と null Eddystone-UID インスタンス識別子を持つため、それらの名前空間を持つすべてのビーコンと一致します。Region
Eddystone-UID ビーコンには 2 つの識別子しかないため、コンストラクターに渡される最後のパラメーターも null です。コードは、最後の 2 行でこれらの各領域の監視を開始します。
最初の領域に一致するビーコンが初めて検出されたとき (たとえば、最初の名前空間識別子を持つビーコン)、didEnterRegion
コールバックが起動され、eddystoneUidRegion1 オブジェクトへの参照が渡されます。2 番目の領域に一致するビーコンが検出された場合も、同等のコールバックが発生します。Region
コールバックに渡されたオブジェクトの内容を調べることで、どれが検出されたかを知ることができます。didExitRegion
監視対象領域に一致するすべてのビーコンが消える場合には、別のコールバックが存在します。
これが Monitoring API の仕組みです。に一致するすべての可視ビーコンのリストとともに、約 1 Hz でコールバックを提供するレンジング API もありますRegion
。モニタリング API とレンジング API のどちらを使用するかは、ユース ケースによって異なります。