我怎样才能读取ISO15693标签UID

时间:2012-01-04 08:00:52

标签: android nfc rfid iso-15693

我尝试过使用标记方法

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

但每次读取标签时,值都会改变。

如何阅读正确的ISO15693标签ID?

3 个答案:

答案 0 :(得分:2)

获得字节数组后,需要将十六进制字节数组转换为字符串

尝试此功能:

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 :(得分:1)

尝试使用以下

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

byte[] id = tagFromIntent.getId();

获取标记标识符(如果有标记标识符)。 标签标识符是低级序列号,用于防冲突和识别。 大多数标签都有一个稳定的唯一标识符(UID),但有些标签会生成一个随机ID 每次发现它们(RID),并且有一些标签根本没有ID(字节数组将是零大小)。

答案 2 :(得分:0)

我碰巧找到了相同问题的解决方案,幸运的是找到了我想要的东西,这是这个问题的解决方案。解决方案来自here的其他类似帖子。

    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));
    }