NFC Android:从NdefMessage中获取价值



我弄乱了一些标签(Mifare classic)

我已经使用nxp应用程序标签编写器向标签编写了一条纯文本消息。

以下代码是我到目前为止拥有的代码:

 ** Called when a new nfc interaction/intent is fired */
public void onNewIntent(Intent intent) {
    NdefMessage[] msgs = null;
    if(intent.equals(NfcAdapter.ACTION_NDEF_DISCOVERED)){
        Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
        if(rawMsgs!=null){
            msgs = new NdefMessage[rawMsgs.length];
            for(int i=0;i<rawMsgs.length;i++){
                msgs[i] = (NdefMessage) rawMsgs[i];
            }
        }
    } else {
        Log.e(TAG, "Other intent then NDEF_DISCOVERED");
    }

我不知道从这一点上去哪里,有人可以指出我正确的方向吗?

我想读取这些消息中的值,我已经知道 ndefmessage 包含 ndefrecords,但是我如何确定我需要的记录是哪条记录?

第一条消息的第一条记录的简单示例:

NdefRecord[] recs = msgs[0].getRecords();
byte[] type = recs[0].getType();
byte[] value = recs[0].getPayload();

当您知道类型时,您也许能够解释value字节。

Android 内置 SDK 目前几乎不支持解析 NDEF 消息和记录。

我写了一个Eclipse插件,用于在Android上开始使用NFC(NDEF),它基于nfctools,它可以读写各种NDEF记录,如上面的NdefMessage - 所以你会看到POJO而不是字节数组:-)

还可以尝试适用于Android的NDEF工具。

最新更新