1

所以,我做了一个 NFC 项目,但是当我在标签上写文本时,我的阅读器无法读取它,我的格式有什么问题吗?

这是文本编写器格式代码:

private NdefMessage getNoteAsNdef() {

    byte[] textBytes = mNote.getText().toString().getBytes();


    NdefRecord textRecord = new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(),
            new byte[0] , textBytes);
    return new NdefMessage(new NdefRecord[] {
        textRecord
    });
}

谢谢之前

4

1 回答 1

1

也许您遇到了字符集编码问题。请尝试以下方法来创建您的 NdefRecord:

byte[] textBytes = mNote.getText().toString().getBytes(Charset.forName("US-ASCII"));
new NdefRecord(NdefRecord.TNF_MIME_MEDIA, "text/plain".getBytes(Charset.forName("US-ASCII")), new byte[0], textBytes);

要创建文本标签,您还可以使用以下内容:

byte[] textBytes = mNote.getText().getBytes();
byte[] textPayload = new byte[textBytes.length + 3];
textPayload[0] = 0x02; // 0x02 = UTF8
textPayload[1] = 'e'; // Language = en
textPayload[2] = 'n';
System.arraycopy(textBytes, 0, textPayload, 3, textBytes.length);
NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], textPayload);
于 2013-07-02T17:40:45.703 回答