每次单击Button
时,我想在NFC标签上写一个新字符串。问题在于,只要检测到标签并按下按钮,保存的前一个字符串就会被新的字符串覆盖。
我遵循了一些在线教程,以找到有效的代码。标签被检测到很好。读写没有问题。
这是在标记中写入文本的两个功能:
**********************************Write to NFC Tag****************************
******************************************************************************/
private void write(String text, Tag tag) throws IOException, FormatException {
NdefRecord[] records = { createRecord(username) };
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;
}
我想在每次按下按钮时创建一个新记录,或者想检索字符串并添加新记录。
例如按钮只按了一次
Hi I'm a string!
例如按钮两次按下
Hi! I'm a string! Hi I'm a string!
答案 0 :(得分:1)
Ndef.writeNdefMessage
方法将覆盖tag上的NdefMessage。
我建议您首先检索消息并生成一个新的String。然后用新的String覆盖标记消息,即创建的内容。