Я пытаюсь показать все доступные маяки Eddystone в моем приложении. У меня есть два eddystone для тестирования этого приложения. Когда я открываю приложение, это маяки scann и отображают дублированные значения, например, прикрепленное изображение. .i хочу показать оба маяка, когда я открываю приложение (маяк -57 и маяк -69). Я использую код ниже.как получить все доступные маяки Eddystone
я должен инициализировать эти Список_массивов сверху
txpowerArray= new ArrayList<String>();
urlArray=new ArrayList<String>();
private BluetoothAdapter.LeScanCallback mLeScanCallback =new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device,final int rssi,final byte[] scanRecord)
{
new Thread()
{
public void run()
{
RangingActivity.this.runOnUiThread(new Runnable()
{
public void run()
{
connect(rssi, scanRecord,device);
}
});
}
}.start();
}
};
public void connect(int rssi, byte[] scanRecord,BluetoothDevice device){
List<ADStructure> structures =
ADPayloadParser.getInstance().parse(scanRecord);
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
for (ADStructure structure : structures)
{
if (structure instanceof EddystoneURL)
{
EddystoneURL es = (EddystoneURL)structure;
Log.d("Eddy", "Tx Power = " + es.getTxPower());
Log.d("Eddy", "URL = " + es.getURL());
clickUrl=es.getURL().toString();
txpower=String.valueOf(es.getTxPower());
txpowerArray.add(txpower);
urlArray.add("" + clickUrl);
Log.d("devicelist", " "+url+" "+txpower);
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}else {
}
}
}
}, 4000);
На вашем пути сканируйте только один маяк. Затем я добавлю обработчик для сканирования в течение некоторого времени. Затем он отображает дубликаты beacons.how, чтобы предотвратить это? Я отредактировал свой вопрос – vindy
Да, маяки могут появляться несколько раз во время цикла сканирования, если их рекламный цикл является достаточно частым по сравнению с циклом сканирования. Поэтому вы должны идентифицировать каждый маяк (возможно, с URL-адресом Eddystone-UID/Eddystone или с 'device.getAddress()') и добавлять их в свой список только один раз. Вы можете сохранить список недавно увиденных маяков и не добавлять дубликаты. Просто обновите любые данные, если маяк уже существует в списке. Я не знаю, если [ответ на сканирование iBeacons] (http://stackoverflow.com/questions/32952919/android-how-do-i-set-uuid-beacon-value-to-proper-textview/32986093) полезно. –