NFC Android:从NdefMessage获取价值

时间:2012-05-02 11:36:28

标签: android nfc mifare

我正在搞乱一些标签(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,但我如何确定哪条记录是我需要的记录?

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:-1)

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

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

同时尝试NDEF Tools for Android