Est-ce la bonne disposition pour détecter les iBeacons avec la bibliothèque Android Beacon d'AltBeacon?

93

J'ai modifié avec succès l' application d'implémentation de référence de la bibliothèque Android Beacon en utilisant la disposition de balise suivante , afin qu'elle détecte un appareil iBeacon que j'ai sous la main:

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);
    }
}

Étant nouveau dans les composants internes des paquets BLE, je ne suis pas sûr que ce soit la bonne disposition à utiliser. La bibliothèque approuve le standard AltBeacon et sa documentation ne mentionne pas comment détecter les périphériques iBeacon.

  • Ce code détectera-t-il tous les appareils iBeacon? c'est-à-dire que le m:préfixe est trop restrictif ou est-ce la bonne séquence d'octets qui correspond à la spécification iBeacon?
  • De même, le reste de la mise en page correspond-il exactement à la spécification iBeacon?

Référence:

ento
la source
L'application de référence est en panne maintenant ..
BlueTrin
1
@BlueTrin Merci, mis à jour le lien vers le nouveau dépôt.
ento

Réponses:

66

Cela a fonctionné pour moi: "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24"

Je ne pense pas que vous ayez besoin de faire correspondre la partie 4c00 car c'est l'identifiant du fabricant, vous pouvez donc probablement le laisser de côté et commencer par m: 2-3 = 0215 Tout le reste semble correct et cela semble fonctionner.

mobiledevbrick
la source
8
Merci! Après avoir testé avec les balises Estimote, je peux confirmer que le m:2-3=0215changement est effectivement nécessaire.
matiash
8
Cela a fonctionné pour moi aussi..j'ai utilisé .. beaconManager.getBeaconParsers (). Add (new BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22 -23, p: 24-24 "));
John le
2
Comment lisez-vous cette mise en page? Qu'est-ce que m, i et p? J'ai une balise prête à l'emploi achetée en Chine. En utilisant l'application Bluetooth LE Scanner, j'ai pu trouver l'UUID de la balise, majeur et mineur. Mais comment trouver le modèle UUID dans lequel le mettre setBeaconLayout?
emen
3
@AimanB Veuillez vous référer à ceci: stackoverflow.com/questions/25319682/… . Dans ce cas, m: données du fabricant, i: UUID de proximité, i: numéro principal, i: numéro mineur, p: puissance du signal, d: niveau de la batterie. Ils représentent le décalage d'octet. (Vous devez ajouter 6 tout en comptant) .Eg: l'ID du fabricant est compris entre le 8ème et le 9ème dans la chaîne "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24 ".
trueblue
3
y a-t-il un moyen de rechercher une balise autour, qu'elle soit estimée ou non?
N Jay
3

Vous pouvez télécharger la spécification iBeacon (cliquez sur "Télécharger l'illustration et les spécifications").

Dans la version actuelle, l'ID d'entreprise doit être 0x4C00et le type de balise doit l'être 0x0215. Tous les autres champs sont obligatoires et comme vous l'avez spécifié.

Alors oui, vous avez tout à fait raison et il détectera toutes les iBeacons conformes.

OT: Il précise également que l'intervalle de publicité doit être de 100 ms, mais je doute sérieusement que toutes les iBeacons s'en tiennent à cela.

Timmmm
la source