首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android读取NFC标签数据

Android读取NFC标签数据
EN

Stack Overflow用户
提问于 2012-11-12 15:59:50
回答 2查看 4.7K关注 0票数 0

我目前正在开发一个应用程序,将读取NFC tags目前我已经写了代码,以获得TAG id,我应该做什么?如果名为EXTRA_NDEF_MESSAGESintent额外值为空,如何读取所有数据。

我现在有读取RFID的代码是

代码语言:javascript
复制
public void onNewIntent(Intent intent) {
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);

        String zin =  tag.getTechList()[0];
        info.setText("TagID: " + bytesToHex(tag.getId())+" Saturs: "+zin);    

 }

我想知道如何读取该NFC tag中的所有数据。

谢谢你的一切!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-24 04:17:29

取决于您的标记的类型。一个超轻型mifare的例子

代码语言:javascript
复制
Tag tagFromIntent = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
MifareUltralight uTag = MifareUltralight.get(tagFromIntent);
uTag.connect(); //You should enclose this into a try-catch because of probably IOException
byte[] data = uTag.readPages(INDEX_OF_PAGES_YOU_WANT); //This returns 4 consecutive pages from the offset you declared. Each page weights 4 bytes
uTag.close();
票数 0
EN

Stack Overflow用户

发布于 2015-02-18 01:07:29

有各种类型的nfc标签(例如,Mifare Ultralight、Mifare Ultralight C、Mifare Classic、felica...)。每个标签具有不同的存储器大小和读取过程。例如: Mifare Ultralight具有64字节,但mifare Classic 1k包含1 64内存。要从mifare ultralight读取数据,不需要额外的身份验证,但Mifare classic需要身份验证。当你获得新的意图时,你可以解析它来获得标签信息:

代码语言:javascript
复制
@Override
    protected void onNewIntent(Intent intent){    
        getTagInfo(intent)
         }
    private void getTagInfo(Intent intent) {
    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
    String[] techList = tag.getTechList();
   for (int i = 0; i < techList.length; i++) {
    if (techList[i].equals(MifareClassic.class.getName())) {

        MifareClassic mifareClassicTag = MifareClassic.get(tag);
        switch (mifareClassicTag.getType()) {
        case MifareClassic.TYPE_CLASSIC:
            //Type Clssic
            break;
        case MifareClassic.TYPE_PLUS:
            //Type Plus
            break;
        case MifareClassic.TYPE_PRO:
            //Type Pro
            break;
        }
    } else if (techList[i].equals(MifareUltralight.class.getName())) {
    //For Mifare Ultralight
        MifareUltralight mifareUlTag = MifareUltralight.get(tag);
        switch (mifareUlTag.getType()) {
        case MifareUltralight.TYPE_ULTRALIGHT:
            break;
        case MifareUltralight.TYPE_ULTRALIGHT_C:

            break;
        }
    } else if (techList[i].equals(IsoDep.class.getName())) {
        // info[1] = "IsoDep";
        IsoDep isoDepTag = IsoDep.get(tag);

    } else if (techList[i].equals(Ndef.class.getName())) {
        Ndef.get(tag);

    } else if (techList[i].equals(NdefFormatable.class.getName())) {

        NdefFormatable ndefFormatableTag = NdefFormatable.get(tag);

    }
    }
    }
    }

当你得到确切的标签时,你必须开始读取这些标签的过程。要阅读标签完整的项目在My GitHub Repo

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13340079

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档