0

私は現在、次に何をすべきかNFC tagsを取得するためのコードを書いているアプリを開発していますか? 余分な名前が空TAG idの場合、すべてのデータを読み取るにはどうすればよいですか。intentEXTRA_NDEF_MESSAGES

私が今持っているRFIDを読み取るためのコードは

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

もうありがとう!

4

2 に答える 2

1

nfc タグにはさまざまな種類があります (例: Mifare Ultralight 、Mifare Ultralight C 、Mifare Classic 、felica...) 。各タグには、異なるメモリ サイズと読み取り手順があります。例: Mifare Ultralight は 64 バイトですが、mifare Classic 1k には 1 キロバイトのメモリが含まれています。mifare ultralight からデータを読み取るには追加の認証は必要ありませんが、Mifare classic には認証が必要です。New Intent を取得すると、それを解析してタグ情報を取得できます。

@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);

    }
    }
    }
    }

Exact Tags を取得したら、そのタグの読み取り手順を開始する必要があります。タグを読むには 完全なプロジェクトはここMy GitHub Repoにあります

于 2015-02-17T17:07:29.310 に答える
0

TAG のタイプによって異なります。超軽量ミファーレの例

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();
于 2012-11-23T20:17:29.180 に答える