Как получить уникальный идентификатор маяка, используя SDK Estimote в Android

Я разрабатываю приложение, в котором я использую Beacons. Я прошел через соответствующий SDK Estimote для этого же. Теперь дело в том, что мне нужно знать уникальный идентификатор конкретного маяка. Предположим, у меня есть 3 маяка, и все они присутствуют в диапазоне устройства. Теперь я хочу выполнять разные функции на основе уникального идентификатора маяков. Для этого мне нужно знать уникальный идентификатор каждого маяка. В настоящее время я даю UUID для маяка и проверяю его в области устройства или нет. Мой код выглядит следующим образом:

private static final String ESTIMOTE_PROXIMITY_UUID = "XYZ"; private static final Region ALL_ESTIMOTE_BEACONS = new Region("regionId",ESTIMOTE_PROXIMITY_UUID, null, null); beaconManager.setMonitoringListener(new MonitoringListener() { @Override public void onExitedRegion(Region region) { //Region Exited } @Override public void onEnteredRegion(Region arg0, List<Beacon> arg1) { // TODO Auto-generated method stub //Do something ... } }); 

Теперь мне нужно получить уникальный идентификатор маяка программно, чтобы я мог принять решение в зависимости от идентификаторов. Пожалуйста, помогите мне разобраться с этим. Любая помощь будет заметна. Благодарю.

Solutions Collecting From Web of "Как получить уникальный идентификатор маяка, используя SDK Estimote в Android"

У каждого маяка есть ID .
ID имеет длину 20 байтов и делится на три части:

  • proximityUUID (16 байт)

  • major число (2 байта)

  • minor число (2 байта).

Как использовать их для идентификации конкретного маяка?

Во-первых, вы должны знать, что вокруг вас может быть много маяков. Эти маяки могут исходить от других поставщиков, компаний или разработчиков, поэтому вы хотите отфильтровать их.
Чтобы фильтровать маяки, вы должны использовать proximityUUID для группировки маяков, предоставленных вами или вашей компанией. Дайте тот же самый proximityUUID всем вашим маякам.
После этого вы можете начать мониторинг и варьировать:

 private final Region MY_BEACONS = new Region("MY_BEACONS","YOUR_PROXIMITY_UUID", null, null); beaconManager.startMonitoring(MY_BEACONS); beaconManager.startRanging(MY_BEACONS); 

Теперь, в ваших слушателях, вы будете уведомлены, когда ваши маяки будут в районе.

Теперь давайте предположим, что вы пишете приложение для кинотеатров в городе. В каждом кинотеатре есть два разных маяка для выполнения различных действий . Как провести различие между маяками для кинотеатров и как сделать это для конкретного маяка в спекулятивном кино?
Используйте major и minor поля. Например:

  • Использовать major для идентификации всех маяков в конкретном кинотеатре,
  • Используйте minor для идентификации конкретного маяка в конкретном кинотеатре.

Когда вы создаете ID для маяков таким образом, вы можете получить конкретный маяк и выполнить действие:

  private final int SCARY_CINEMA_ID = 1111; private final int SCARY_CINEMA_BEACON_1 = 1; private final int SCARY_CINEMA_BEACON_2 = 2; private final int COMEDY_CINEMA_ID = 2222; private final int COMEDY_CINEMA_BEACON_1 = 1; private final int COMEDY_CINEMA_BEACON_2 = 2; @Override public void onEnteredRegion(Region region, List<Beacon> beacons) { for(Beacon beacon : beacons){ if(beacon.getMajor() == SCARY_CINEMA_ID){ if(beacon.getMinor == SCARY_CINEMA_BEACON_1){ //do something for this beacon } else{ //do something for second beacon in cinema } } else if(beacon.getMajor == COMEDY_CINEMA_ID){ ... } } 

Надеюсь, это поможет вам 🙂

Пришел к этой статье, когда я ее пробовал, это может вам помочь. https://community.estimote.com/hc/en-us/articles/200868188-How-do-I-modify-UUID-major-and-minor-values-