1

NFC アプリケーションを開始し、ユーザーの操作に基づいてコンテンツの読み取りと削除を書き込もうとしました。私には理解できないことがいくつかあります。

サイズについて

データが書き込まれたタグがあります。しかし、同じタグに同じ量のデータを再度書き込もうとすると、書き込めません。最大容量を超えるサイズを指定します。サイズが大きい方法があるのでしょうか、それともサイズを小さくする他の方法がありますか。

データのWIPINGについて

また、タグに書いたデータを削除したいです。データを消去する方法はありますか、またはデータを書き込む方法で空の文字列を書き込む必要があります。

これで私を助けることができる体はありますか?以下は、データを書き込むための私のコードです

private boolean writeTag(Tag tag) 
    {
        NdefMessage message = new NdefMessage(createNdefRecords());
        try
        {
            // see if tag is already NDEF formatted
            Ndef ndef = Ndef.get(tag);
            if (ndef != null) 
            {
                ndef.connect();
                if (!ndef.isWritable())
                {
                    displayMessage("Read-only tag.");
                    return false;
                }

                // work out how much space we need for the data
                int size = message.toByteArray().length;
                if (ndef.getMaxSize() < size) 
                {
                    displayMessage("Tag doesn't have enough free space.");
                    return false;
                }

                ndef.writeNdefMessage(message);
                displayMessage("Tag written successfully.");
                return true;
            } 
        } 
        catch (Exception e)
        {
            displayMessage("Failed to write tag");
        }

        return false;
    }

private void addTempData()
    {
        data.add("10");
        data.add("1");
        data.add("1");
        data.add("245");
        data.add("40238");
        data.add("0");  

    }

    public NdefRecord[] createNdefRecords()
    {
        NdefRecord[] ndefRecords = new NdefRecord[data.size()];
        for(int i=0; i < data.size(); i++)
        {
            NdefRecord record  = getNdefRecord(data.get(i));
            ndefRecords[i] = record;
        }

        return ndefRecords;
    }

    private NdefRecord getNdefRecord(String data)
    {
        NdefRecord record = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, MimeType.TYPE.substring(1).getBytes(), new byte[] {}, data.getBytes());

        return record;
    }
4

1 に答える 1