2016-07-22 3 views
0

Я использую AltBeacon для обнаружения Bluetooth iBeacon на Android-устройстве (Android-маяк-библиотеке). В настоящее время единственный способ получить маяки - это обратный вызов: RangeNotifier.Сканирование по бегущей звезде

Однако функциональность, которую я желаю, каждые 5 секунд, выполняет сканирование ближайших маяков и делает это всего лишь 10 раз (т. Е. Просматривает около минуты). Я хотел бы иметь возможность сканировать в цикле for, но кажется, что единственный способ сделать это до сих пор - с обратным вызовом, и я не могу контролировать, когда он запущен.

Кто-нибудь знает, возможно ли это с помощью Android AltBeacon?

ответ

1

библиотека не предназначена для такого рода специальной проверки, но это можно делать то, что вы хотите с помощью следующей методики:

  1. Установите период сканирования в пять секунд с :

    mBeaconManager.setForegroundBetweenScanPeriod(5000l); 
    
  2. Установить начальную отметку времени при запуске в диапазоне:

    mScanStartTime = System.currentTimeMillis(); 
    mBeaconManager.startRangingBeaconsInRegion(region); 
    
  3. Обратный вызов сканирования будет вызываться один раз каждые пять секунд со списком обнаруженных маяков. Процесс этих маяков, и остановить сканирование, если 50 секунд (10 скан) прошло:

    @Override 
    public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
        // Process beacons here 
        if (System.currentTimeMillis() - mScanStartTime > 50*1000l) { 
        mBeaconManager.stopRangingBeaconsInRegion(region); 
        } 
    } 
    
+0

Awesome, я надеялся, что я мог бы вызвать их по команде, но это решение будет работать отлично. Спасибо @davidgyoung –

Смежные вопросы