Android デバイスで AltBeacon サンプル アプリを使用しています - altbeacon.org が提供するサンプル アプリはこちら: https://github.com/AltBeacon/android-beacon-library-reference
ただし、起動時のアプリは 1 つのビーコンのみを検出して表示します。Android デバイスの近くに約 5 つのビーコンがあります。すべてのビーコンを検出するにはどうすればよいですか?
RangingActivity.java で、ビーコンが見えたときに呼び出される次のメソッドに気付きました。
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) {
if (beacons.size() > 0) {
EditText editText = (EditText) RangingActivity.this.findViewById(R.id.rangingText);
Beacon firstBeacon = beacons.iterator().next();
logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
}
}
}
次のように、while ループでコレクションから読み取るようにイテレータを変更しました。
Beacon firstBeacon;
while(beacons.iterator().hasNext()){
firstBeacon = beacons.iterator().next();
logToDisplay("The first beacon " + firstBeacon.toString() + " is about " + firstBeacon.getDistance() + " meters away.");
}
ただし、この変更によりアプリがクラッシュします。
私の質問:
(1) Android デバイスの近くにあるすべてのビーコンを表示するにはどうすればよいですか?
(2) 領域外に出るビーコンを検出するにはどうすればよいですか?