获取NFC标签序列号

时间:2015-07-06 20:37:52

标签: android nfc

这是我第一个使用NFC的项目。我想简单地获取NFC标签的ID。我一直在关注此post的回复。这是代码:

public void onResume() {
        super.onResume();

    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {

        Toast.makeText(this,"NFC on resume working",Toast.LENGTH_LONG).show();
        byte[] tagId = getIntent().getByteArrayExtra(NfcAdapter.EXTRA_ID);
        Log.i("EHEHEHEHEHE",tagId + "");
    }
//process the msgs array
}

这是代码的响应:

07-06 22:07:29.804  16729-16729/za.co.bookbay.nfcplay I/EHEHEHEHEHE﹕ [B@423a1e18
07-06 22:08:08.644  16729-16729/za.co.bookbay.nfcplay I/EHEHEHEHEHE﹕ [B@423bfde0
07-06 22:08:09.574  16729-16729/za.co.bookbay.nfcplay I/EHEHEHEHEHE﹕ [B@423d6ec8

现在这个数字不断变化,因此这让我相信上面的代码没有得到Tag的序列号或者这是正确的。如果是这样,数字变化的原因是什么?

2 个答案:

答案 0 :(得分:5)

您正在打印byte []对象,而不是它的内容。这就是你在输出中得到[B @ SomeAddress。

的原因

要打印ID,您可以使用以下内容:

String hexdump = new String();
for (int i = 0; i < tagId.length; i++) {
  String x = Integer.toHexString(((int) tagId[i] & 0xff));
  if (x.length() == 1) { 
    x = '0' + x;
  }
  hexdump += x + ' ';
}
Log.i("EHEHEHEHEHE",hexdump);

(可能有更好的方法将字节数组转换为hexdump-string,java不是我最喜欢的编程语言)

答案 1 :(得分:0)

您可以使用@Roland发布的小功能将ByteArray直接转换为HexString:

fun ByteArray.toHexString() = joinToString("") { "%02x".format(it) }

下一个链接可以为您提供更多帮助: Converting a byte array into a hex string