È questo il layout corretto per rilevare iBeacons con la libreria di beacon Android di AltBeacon?


93

Ho modificato con successo l' app di implementazione di riferimento della Android Beacon Library utilizzando il seguente layout beacon , in modo che rilevi un dispositivo iBeacon che ho a portata di mano:

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        BeaconManager beaconManager = BeaconManager.getInstanceForApplication(this);
        beaconManager.getBeaconParsers().add(new BeaconParser().
               setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"));
        beaconManager.bind(this);
    }
}

Essendo nuovo agli interni dei pacchetti BLE, non sono sicuro che questo sia il layout corretto da usare. La libreria approva lo standard AltBeacon e la sua documentazione non menziona come rilevare i dispositivi iBeacon.

  • Questo codice rileverà tutti i dispositivi iBeacon? cioè il m:prefisso è troppo restrittivo o è la giusta sequenza di byte che corrisponde alle specifiche iBeacon?
  • Allo stesso modo, il resto del layout corrisponde esattamente alle specifiche iBeacon?

Riferimento:


L'applicazione di riferimento è ora
inattiva

1
@BlueTrin Grazie, aggiornato il collegamento al nuovo repository.
ento

Risposte:


66

Questo ha funzionato per me: "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24"

Non penso che sia necessario abbinare la parte 4c00 perché questo è l'ID del produttore, quindi probabilmente puoi lasciarlo spento e iniziare con m: 2-3 = 0215 Tutto il resto sembra a posto e sembra funzionare.


8
Grazie! Dal test con i beacon Estimote posso confermare che la m:2-3=0215modifica è effettivamente necessaria.
matiash

8
Questo ha funzionato anche per me..ho usato .. beaconManager.getBeaconParsers (). Add (new BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22 -23, p: 24-24 "));
John,

2
Come leggi quel layout? Cosa sono m, i e p? Ho un radiofaro pronto all'uso acquistato dalla Cina. Utilizzando l'app Bluetooth LE Scanner, sono stato in grado di trovare l'UUID del beacon, maggiore e minore. Ma come trovo il pattern UUID in cui inserirlo setBeaconLayout?
emen

3
@AimanB Si prega di fare riferimento a questo: stackoverflow.com/questions/25319682/… . In questo, m: Dati del produttore, i: UUID di prossimità, i: Numero principale, i: Numero minore, p: Potenza del segnale, d: livello della batteria. Rappresentano l'offset di byte. (È necessario aggiungere 6 durante il conteggio) .Eg: l'ID del produttore è compreso tra l'8 ° e il 9 ° nella stringa "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24 ".
trueblue

3
c'è un modo per cercare qualsiasi faro in giro indipendentemente dal fatto che sia stimato o no?
N Jay

3

Puoi scaricare le specifiche iBeacon (fare clic su "Scarica grafica e specifiche").

Nella versione corrente l'ID azienda deve essere 0x4C00e il tipo di beacon deve essere 0x0215. Tutti gli altri campi sono obbligatori e come specificato.

Quindi sì, hai esattamente ragione e rileverà tutti gli iBeacons conformi.

OT: Specifica anche che l'intervallo pubblicitario deve essere di 100 ms, ma dubito seriamente che tutti gli iBeacons si attengano a questo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.