我目前正致力于NFC,并希望将字节数组写入NFC标签。我可以使用以下代码编写一个字符串:
private void write(String text, Tag tag) throws IOException, FormatException {
NdefRecord[] records = { createRecord(text) };
NdefMessage message = new NdefMessage(records);
// Get an instance of Ndef for the tag.
Ndef ndef = Ndef.get(tag);
// Enable I/O
ndef.connect();
// Write the message
ndef.writeNdefMessage(message);
// Close the connection
ndef.close();
}
private NdefRecord createRecord(String text) throws UnsupportedEncodingException {
String lang = "en";
byte[] textBytes = text.getBytes();
byte[] langBytes = lang.getBytes("US-ASCII");
int langLength = langBytes.length;
int textLength = textBytes.length;
byte[] payload = new byte[1 + langLength + textLength];
// set status byte (see NDEF spec for actual bits)
payload[0] = (byte) langLength;
// copy langbytes and textbytes into payload
System.arraycopy(langBytes, 0, payload, 1, langLength);
System.arraycopy(textBytes, 0, payload, 1 + langLength, textLength);
NdefRecord recordNFC = new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], payload);
return recordNFC;
}
但是我怎么需要更改上面的代码来编写一个字节数组而不是字符串?
答案 0 :(得分:0)
您可以创建一个外部记录,而不是创建文本记录,该记录包含要作为其有效负载存储在标记上的字节数组:
byte[] byteArray = ...
NdefRecord[] records = {
NdefRecord.createExternal("example.com", "mytype", byteArray)
};
您可以将“example.com”设置为您要用于NFC论坛外部类型的任何域名,将“mytype”设置为您要为外部类型指定的名称(请注意外部类型名称必须为小写。< / p>