我曾嘗試使用該標記方法我怎麼能讀取標籤ISO15693 UID
byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
但該值每變化,當我讀到標籤的時間。
如何讀取正確的ISO15693標籤ID?
我曾嘗試使用該標記方法我怎麼能讀取標籤ISO15693 UID
byte[] tagId = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
但該值每變化,當我讀到標籤的時間。
如何讀取正確的ISO15693標籤ID?
嘗試使用以下
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
byte[] id = tagFromIntent.getId();
獲取標籤標識符(如果有的話)。 標籤標識符是一個低級序列號,用於防衝突和識別。 大多數標籤都有一個穩定的唯一標識符(UID),,但某些標籤每次發現它們時都會生成一個隨機ID (RID),而且有些標籤根本沒有標識(字節數組將爲零 - 大小)。
後你得到的字節數組,你需要十六進制字節數組轉換爲字符串
試試這個功能:
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();
}
這一個工作,但額外的「如果(i> = 0)」在循環內是多餘的。 – 2013-07-29 08:39:51
我偶然發現了同樣的問題的解決,幸運的是沒有找到我想要什麼,這是對這個問題的解決方案。該解決方案來自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));
}
tagFromIntent.getId()也返回不正確的ID。 – king5201 2012-01-04 08:26:33
某些標籤返回一個新的隨機ID ..請參閱上面的說明 – 2012-01-04 08:35:16
tagFromIntent.getId()的值是一個字節數組,將數據類型更改爲字符串並將獲得正確的ID。 – king5201 2012-01-05 10:43:32