現在、Android ビーコン アプリケーションに取り組んでいます。検出されたビーコンを一覧表示したいだけです。ユーザーがボタンをクリックListView
すると、検出されたビーコンのリストが表示されます。些細な問題かもしれませんが、本当に困っています。以下は、測距および監視通知のコードです。
@Override
public void onBeaconServiceConnect() {
beaconManager.setRangeNotifier(new RangeNotifier() {
@Override
public void didRangeBeaconsInRegion(final Collection<Beacon> beacons, Region region) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
ArrayList<Beacon> allRangedBeacons = (ArrayList<Beacon>) beacons;
ArrayList<Beacon> newRangedBeacons = new ArrayList<Beacon>();
ArrayList<Beacon> cloneArraylistIBeacon = (ArrayList<Beacon>) arraylistIBeacon.clone();
int index = 0;
for (Beacon presentBeacons : cloneArraylistIBeacon) {
boolean beaconPresent = false;
for (Beacon eachRangedBeacon : allRangedBeacons) {
if (presentBeacons.equals(eachRangedBeacon)) {
arraylistIBeacon.remove(index);
arraylistIBeacon.add(index, eachRangedBeacon);
// Toast.makeText(MainActivity.this,"U detected a beacon",
// Toast.LENGTH_LONG).show();
beaconPresent = true;
break;
}
}
index++;
}
for (Beacon eachRangedBeacon : allRangedBeacons) {
boolean beaconPresent = false;
for (Beacon presentBeacons : cloneArraylistIBeacon) {
if (eachRangedBeacon.equals(presentBeacons)) {
beaconPresent = true;
break;
}
}
if (!beaconPresent) {
newRangedBeacons.add(eachRangedBeacon);
}
}
// arraylistIBeacon.remove(nonRangedBeacons);
arraylistIBeacon.addAll(newRangedBeacons);
info.notifyDataSetChanged();
}
});
}
});
beaconManager.setMonitorNotifier(new MonitorNotifier() {
@Override
public void didExitRegion(Region region) {
ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100);
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200);
Toast.makeText(getApplicationContext(), "u just went out of the region - Monitor mode", Toast.LENGTH_LONG).show();
}
@Override
public void didEnterRegion(Region region) {
ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100);
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200);
Toast.makeText(getApplicationContext(), "u just enterd the region - Monitor mode", Toast.LENGTH_LONG).show();
}
@Override
public void didDetermineStateForRegion(int state, Region region) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "u just enterd the didDetermineStateForRegion - Monitor mode", Toast.LENGTH_LONG).show();
}
});
}
あらゆる種類のヘルプをいただければ幸いです。