2016-07-22 63 views
0

Ich benutze AltBeacon für Bluetooth iBeacon Erkennung auf einem Android-Gerät (Android-Beacon-Bibliothek). Zurzeit kann ich Beacons nur über einen Rückruf empfangen: RangeNotifier.Altbeacon Scan auf Befehl

Die Funktionalität, die ich wünsche, ist jedoch alle 5 Sekunden, führen Sie einen Scan für nahegelegene Beacons durch, und tun Sie das nur 10-mal insgesamt (d. H. Für ungefähr eine Minute scannen). Ich würde gerne in der Lage sein, in einer for-Schleife zu scannen, aber es sieht so aus, als ob der einzige Weg, dies zu tun, der Callback ist und ich nicht kontrollieren kann, wann er ausgelöst wird.

Weiß jemand, ob dieses Verhalten mit dem Android AltBeacon möglich ist?

Antwort

1

Die Bibliothek nicht für diese Art von Ad-hoc-Scannen ausgelegt ist, aber es ist möglich zu tun, was Sie mit der folgenden Technik mögen:

  1. die Scan-Zeit einstellen 5 Sekunden, um mit :

    mBeaconManager.setForegroundBetweenScanPeriod(5000l); 
    
  2. einen Startzeitstempel gesetzt, wenn Sie beginnen im Bereich:

    mScanStartTime = System.currentTimeMillis(); 
    mBeaconManager.startRangingBeaconsInRegion(region); 
    
  3. Der Scan-Callback wird einmal alle fünf Sekunden mit einer Liste der gefundenen Beacons aufgerufen. Verfahren zur Herstellung dieser Beacons und Stoppen des Scanvorganges, wenn 50 Sekunden (10 Scans) bestanden haben:

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

Awesome, ich habe gehofft, dass ich sie auf Befehl auslösen könnte, aber diese Lösung funktioniert super. Danke @davidgyoung –