UUID маяка отличается при сканировании

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

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, что создает некоторые проблемы в моем приложении.

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

Изменить:

Я могу опубликовать больше кода, если это необходимо.


person Haris    schedule 30.01.2016    source источник


Ответы (2)


Формат 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);

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

person davidgyoung    schedule 30.01.2016

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

Исправьте текущий uuid на верхний без тире (здесь используется System.Linq):

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

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

e2c56db5-dffb-48d2-b060-d0f5a71096e0

To:

E2C56DB5DFFB48D2B060D0F5A71096E0
person Baronz    schedule 30.01.2016
comment
На самом деле мне нужно сравнить UUID со значением базы данных через php, и прямо сейчас я не могу внести туда соответствующие изменения, я думаю, что должен следовать вашему ответу и ставить символ - на каждом 8-символьном интервале. - person Haris; 30.01.2016
comment
О, извините, я неправильно понял это как решение С#. Опять же, в качестве решения C # вы можете удалить тире из своего UUID, я думаю, мы могли бы быстро написать ту же строку в PHP: uuid = (uuid_orig.Substring(0, 13) + uuid_orig.Substring(15, uuid_orig.Length - 15)).ToUpper(); - person Baronz; 30.01.2016
comment
На самом деле проблема не в верхнем регистре, так как это значение сравнивается со значением базы данных mysql, проблема только в косой черте. И на данный момент я не могу трогать PHP, так как он используется каким-то другим приложением. - person Haris; 30.01.2016
comment
$newUuid = substr($uuid,0,13) . substr($uuid,15,21); // в PHP возвращает: e2c56db5-dffb8d2-b060-d0f5a71096e0 - person Baronz; 30.01.2016