¿Es este el diseño correcto para detectar iBeacons con la biblioteca de balizas de Android de AltBeacon?

93

He modificado con éxito la aplicación de implementación de referencia de la biblioteca de balizas de Android utilizando el siguiente diseño de balizas , para que detecte un dispositivo iBeacon que tengo a 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);
    }
}

Siendo nuevo en lo interno de los paquetes BLE, no estoy seguro de si este es el diseño correcto para usar. La biblioteca respalda el estándar AltBeacon y su documentación no menciona cómo detectar dispositivos iBeacon.

  • ¿Este código detectará todos los dispositivos iBeacon? es decir, ¿el m:prefijo es demasiado restrictivo o es la secuencia de bytes correcta que coincide con la especificación de iBeacon?
  • Del mismo modo, ¿el resto del diseño coincide exactamente con la especificación de iBeacon?

Referencia:

ento
fuente
La aplicación de referencia ya no está disponible ..
BlueTrin
1
@BlueTrin Gracias, actualizado el enlace al nuevo repositorio.
ento

Respuestas:

66

Esto funcionó para mí: "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24"

No creo que deba hacer coincidir la parte 4c00 porque esa es la identificación del fabricante, por lo que probablemente pueda dejarla y comenzar con m: 2-3 = 0215 Todo lo demás se ve bien y parece funcionar.

mobiledevbrick
fuente
8
¡Gracias! De las pruebas con las balizas de Estimote, puedo confirmar que el m:2-3=0215cambio es realmente necesario.
Matiash
8
Esto también funcionó para mí ... utilicé .. beaconManager.getBeaconParsers (). Add (new BeaconParser (). SetBeaconLayout ("m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22 -23, pág: 24-24 "));
John
2
¿Cómo lees ese diseño? ¿Qué es m, i y p? Tengo una baliza lista para usar comprada en China. Al usar la aplicación Bluetooth LE Scanner, pude encontrar el UUID de la baliza, mayor y menor. Pero, ¿cómo encuentro el patrón UUID para ponerlo setBeaconLayout?
emen
3
@AimanB Por favor, consulte esto: stackoverflow.com/questions/25319682/… . En esto, m: datos del fabricante, i: UUID de proximidad, i: número principal, i: número menor, p: potencia de la señal, d: nivel de batería. Representan el desplazamiento de bytes. (Debe agregar 6 mientras cuenta). Por ejemplo: el ID del fabricante se encuentra entre el 8 y el 9 en la cadena "m: 2-3 = 0215, i: 4-19, i: 20-21, i: 22-23, p: 24-24 ".
trueblue
3
¿Hay alguna manera de escanear en busca de cualquier baliza independientemente de si está estimada o no?
N Jay
3

Puede descargar las especificaciones de iBeacon (haga clic en "Descargar ilustraciones y especificaciones").

En la versión actual, la identificación de la empresa debe ser 0x4C00y el tipo de baliza debe ser 0x0215. Todos los demás campos son obligatorios y como usted especificó.

Así que sí, está exactamente en lo correcto y detectará todos los iBeacons compatibles.

OT: También especifica que el intervalo publicitario debe ser de 100 ms, pero dudo seriamente que todos los iBeacons se adhieran a eso.

Timmmm
fuente