usar tool setbeaconlayout program library example como beacons beacon java android bluetooth ibeacon altbeacon

java - tool - sdk beacon



Excepción al intentar agregar un BeaconParser a AltBeacon lib (1)

Ya respondí su pregunta en GitHub pero sentí que debería responder aquí también para ayudar a otras personas que enfrentan este problema.

He comprobado el código fuente (v2.1.3), lo más probable es que esté agregando un nuevo analizador después de vincular el servicio de beacon (que prohíbe la adición de diseño personalizado en el futuro).

public List<BeaconParser> getBeaconParsers() { if (isAnyConsumerBound()) { return Collections.unmodifiableList(beaconParsers); } return beaconParsers; }

Para agregar cualquier analizador de diseño luego, debe desvincular todas las conexiones de servicio que también incluyen todas las RegionBootsrap . Si definió uno, necesita desactivarlo ya que también establece una conexión con BeaconService .

Sin embargo, creo que no necesita agregar ningún diseño personalizado más adelante. Si está almacenando su diseño en control remoto, primero debe buscarlos y luego vincular BeaconManager .

Por cierto, si crees que esta capacidad se debe agregar a la biblioteca, puedes crear una solicitud en la página GitHub de la biblioteca: AltBeacon GitHub

He intentado modificar la aplicación de referencia de AltBeacon para detectar iBeacons.

En RangingActivity, reemplacé

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); beaconManager.bind(this); }

con

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_ranging); BeaconParser bp = new BeaconParser(); bp.setBeaconLayout("m:0-3=4c000215,i:4-19,i:20-21,i:22-23,p:24-24"); List<BeaconParser> lbp = beaconManager.getBeaconParsers(); lbp.add(bp); beaconManager.bind(this); }

Para aplicar las modificaciones para detectar un iBeacon que encontré aquí .

Sin embargo, esto arroja que lbp es java.util.Collections $ UnmodifiableRandomAccessList. Soy nuevo en Java, pero supongo que esta es una lista a la que no puedo agregar elementos y algo debe haber cambiado en la biblioteca entre la solución en el segundo enlace y ahora.

¿Alguien sabe cuál sería la forma correcta de agregar un nuevo BeaconParser o qué estoy haciendo mal aquí?