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:
Respuestas:
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.
fuente
m:2-3=0215
cambio es realmente necesario.setBeaconLayout
?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
0x4C00
y el tipo de baliza debe ser0x0215
. 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.
fuente