Как я могу прочитать UID теги ISO15693 - PullRequest
2 голосов
/ 04 января 2012

Я пытался использовать метод тега

byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);      

Но значение меняется каждый раз, когда я читаю тег.

Как я могу прочитать правильный идентификатор тега ISO15693?

Ответы [ 3 ]

2 голосов
/ 26 сентября 2012

После того, как вы получите байтовый массив, вам нужно преобразовать шестнадцатеричный байтовый массив в строку *. 1001 *

Попробуйте эту функцию:

public String getHexString(byte[] b) {
    StringBuffer sb = new StringBuffer();
    for (int i=b.length-1; i >= 0; i--){
        sb.append(Integer.toString((b[i] & 0xff) + 0x100, 16).substring(1));
    }
    return sb.toString();
}
1 голос
/ 04 января 2012

Попробуйте использовать следующее

Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

byte[] id = tagFromIntent.getId();

Получить идентификатор тега (если он есть). Идентификатор тега - это низкоуровневый серийный номер, используемый для предотвращения столкновений и идентификации. Большинство тегов имеют стабильный уникальный идентификатор (UID), , но некоторые теги будут генерировать случайный идентификатор каждый раз, когда они обнаруживаются (RID) , и есть некоторые теги без идентификатора вообще (байтовый массив будет иметь нулевой размер).

0 голосов
/ 05 сентября 2013

Мне удалось найти решение для той же проблемы, и, к счастью, я нашел то, что хочу, и это решение этого вопроса Решение от другого подобного поста от здесь .

    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    Log.d(TAG, "UID: " + bin2hex(tag.getId()));

    //To display the UID
    static String bin2hex(byte[] data) {
        return String.format("%0" + (data.length * 2) + "X", new BigInteger(1,data));
    }
...