1

Я пытаюсь выяснить UUID маяка, используя altbeacon и маяк получения детектируют с использованием кода ниже,Beacon UUID отличается при сканировании

beaconManager.setRangeNotifier (новый RangeNotifier() { @Override

public void didRangeBeaconsInRegion(Collection<Beacon> beacons, Region region) { 
    if (beacons.size() > 0) { 
     for (Beacon beacon : beacons) { 

     String uuid = beacon.getId1().toString(); 
     ... 
} 

Но проблема в том, мой фактический UUID маяк

E2C56DB5-DFFB48D2-B060D0F5-A71096E0 

Где, как приведенный выше код дает мне UUID

e2c56db5-dffb-48d2-b060-d0f5a71096e0 

В принципе оба же за исключением - символ позиция отличается от обоих UUID, это создает некоторые проблемы в моем приложении

Что может быть проблема?

Edit:

я могу разместить больше кода, если это необходимо.

ответ

1

Формат UUID, возвращаемый библиотекой Android Beacon, является стандартным, а в базе данных нет. Так как вы не можете изменить формат базы данных легко, вы можете преобразовать формат строки с этих строк кода Java:

String uuid = beacon.getId1().toString(); 
String s2 = s.replaceAll("-", "").toUpperCase(); 
String alternateFormatUuid = s2.substring(0,8)+"-"+s2.substring(8,16)+"-"+s2.substring(16,24)+"-"+s2.substring(24,32); 

Я уверен, что есть более элегантные способы сделать это, но приведенный выше код будет делать работу ,

2

Одним из решений было бы вытащить все черточки из обоих и преобразовать их в верхний регистр и сравнить их.

Fix ваш текущий UUID в верхний, без дефисов (это использует System.Linq):

uuid = new string(uuid.Where(c => c != '-').ToArray()).ToUpper(); 

Это изменит ваш UUID от:

e2c56db5-dffb-48d2-b060-d0f5a71096e0 

To:

E2C56DB5DFFB48D2B060D0F5A71096E0 
+0

На самом деле, мне нужно сравнить UUID с базовым значением через php, и сейчас я не могу внести соответствующие изменения, я думаю, что я должен следовать в соответствии с вашим ответом и поместить символ '-' на каждый интервал из 8 символов. – Haris

+0

О, извините, я неправильно понял это как решение C#. Опять же, как решение aC#, вы можете удалить тире из своего UUID, я думаю, мы могли бы быстро написать одну и ту же строку в PHP: uuid = (uuid_orig.Substring (0, 13) + uuid_orig.Substring (15, uuid_orig. Длина - 15)). ToUpper(); – Baronz

+0

Фактически, верхний регистр не является проблемой, так как это значение сравнивается с значением базы данных mysql, только проблема - это косая черта. И на данный момент я не могу трогать PHP, поскольку он используется каким-то другим приложением. – Haris