0

AltBeacon ライブラリを使用して、Eddystone ビーコンで複数の地域を監視することについて質問があります。

たとえば、3 つのビーコンがあり、各ビーコンが他のリージョンに割り当てられ、ビーコンのインスタンス値 ("region1", null, "InstanceValueOfBeacon", null) に基づいてリージョンが定義されているとします。 didEnterRegion ごとに異なるアクション。

ここで、すべてのビーコンを隣り合わせに配置します。アプリケーションはどのように応答しますか? 複数のビーコンが見つかったため、異なるリージョン間で切り替えを続けますか? 最初に見つかったビーコンのアクションを実行するだけですか? または、それはどのように正確に機能しますか?

4

1 に答える 1

0

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 インスタンス識別子を持つため、それらの名前空間を持つすべてのビーコンと一致します。RegionEddystone-UID ビーコンには 2 つの識別子しかないため、コンストラクターに渡される最後のパラメーターも null です。コードは、最後の 2 行でこれらの各領域の監視を開始します。

最初の領域に一致するビーコンが初めて検出されたとき (たとえば、最初の名前空間識別子を持つビーコン)、didEnterRegionコールバックが起動され、eddystoneUidRegion1 オブジェクトへの参照が渡されます。2 番目の領域に一致するビーコンが検出された場合も、同等のコールバックが発生します。Regionコールバックに渡されたオブジェクトの内容を調べることで、どれが検出されたかを知ることができます。didExitRegion監視対象領域に一致するすべてのビーコンが消える場合には、別のコールバックが存在します。

これが Monitoring API の仕組みです。に一致するすべての可視ビーコンのリストとともに、約 1 Hz でコールバックを提供するレンジング API もありますRegion。モニタリング API とレンジング API のどちらを使用するかは、ユース ケースによって異なります。

于 2015-09-30T13:14:00.080 に答える