10
Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.i("tag ID", myTag.getId().toString());
這給了我一個像「[B @ 40521c40」這樣的ID,但是這個ID改變了每次讀取。你如何閱讀Android上NFC標籤的唯一ID?
任何幫助將不勝感激。
謝謝。
Tag myTag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
Log.i("tag ID", myTag.getId().toString());
這給了我一個像「[B @ 40521c40」這樣的ID,但是這個ID改變了每次讀取。你如何閱讀Android上NFC標籤的唯一ID?
任何幫助將不勝感激。
謝謝。
你仍然需要將字節轉換爲字符串:
private String bytesToHexString(byte[] src) {
StringBuilder stringBuilder = new StringBuilder("0x");
if (src == null || src.length <= 0) {
return null;
}
char[] buffer = new char[2];
for (int i = 0; i < src.length; i++) {
buffer[0] = Character.forDigit((src[i] >>> 4) & 0x0F, 16);
buffer[1] = Character.forDigit(src[i] & 0x0F, 16);
System.out.println(buffer);
stringBuilder.append(buffer);
}
return stringBuilder.toString();
}
我跑了類似的問題,可以解決這個問題。問題是轉換爲字符串。
myTag.getId()返回字節數組。您應將這些字節轉換爲十六進制字符串。我用下面的功能,我發現這裏stackoverflow.com
final protected static char[] hexArray = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
int v;
for (int j = 0; j < bytes.length; j++) {
v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
Aehm,你打印出來的UID字節數組的地址,而不是內容... – 2011-05-20 07:29:25
我將如何去獲得實際內容?謝謝。 – user635028 2011-05-20 17:29:15