【问题标题】:Getting the NFC Tag Serial Number获取 NFC 标签序列号
【发布时间】:2015-09-24 03:35:19
【问题描述】:

这是我第一个使用 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

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

【问题讨论】:

    标签: android nfc


    【解决方案1】:

    您正在打印 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 不是我最喜欢的编程语言)

    【讨论】:

      【解决方案2】:

      你可以通过@Roland发布的一个小函数直接将ByteArray转换为HexString:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-19
        • 2015-01-06
        • 1970-01-01
        相关资源
        最近更新 更多