我们希望将以下数据写入NFC :(在两个单独的行中)
Id:A112
Result:Pass
并且坚持使用NdefRecord
创建MIME类型text / plain。实际上找到了两种方法:
使用constuctor
public NdefRecord (short tnf, byte[] type, byte[] id, byte[] payload)
使用静态方法
的其他方法public static NdefRecord createMime (String mimeType, byte[] mimeData)
使用静态createMime
方法,我们可以将记录创建为:
byte[] stringBytes = "Id:A112Result:Pass".getBytes();
NdefRecord.createMime("text/plain", stringBytes);
如何使用构造函数NdefRecord
实现相同的目标,以及上述两种方式之间的区别是什么?另外,我们如何将上述数据(Id:A112Result:Pass)分成两行写入NFC中。
答案 0 :(得分:1)
相当于
public static NdefRecord createMime (String mimeType, byte[] mimeData)
直接使用NdefRecord
构造函数是这样的:
public NdefRecord myCreateMime (String mimeType, byte[] mimeData) {
return new NdefRecord(
NdefRecord.TNF_MIME_MEDIA,
mimeType.getBytes("US-ASCII"),
null,
mimeData)
}
一般情况下,我会避免使用text / plain MIME类型。除了人类可读的文本之外,此MIME类型不会为有效负载数据提供任何其他含义。如果您想传达特定含义,请使用反映有效负载数据内容的相应MIME类型,或者更好地使用自定义NFC论坛外部类型。
另请注意,MIME类型text / plain默认使用US-ASCII字符编码。但是,使用"Id:A112Result:Pass".getBytes()
将在Android上为您提供UTF-8编码。因此,在将字符串转换为字节时,应明确指定字符编码:
byte[] stringBytes = "Id:A112Result:Pass".getBytes("US-ASCII");
最后,如果您想在文本中的任何位置插入换行符,则可以使用换行符\n
或回车符+换行符\r\n
的组合(取决于您的目标系统的需求)。