- From: François Beaufort via GitHub <sysbot+gh@w3.org>
- Date: Tue, 08 Dec 2020 10:58:12 +0000
- To: public-web-nfc@w3.org
Implementation is good. See https://source.chromium.org/chromium/chromium/src/+/master:services/device/nfc/android/java/src/org/chromium/device/nfc/NdefMessageUtils.java;drc=bf799475f9ff40b7e1e2be2fd3a68911c4f047ee;bpv=1;bpt=1;l=271
```java
private static NdefRecord createTextRecord(byte[] text) throws UnsupportedEncodingException {
// Check that text byte array is not empty.
if (text.length == 0) {
return null;
}
NdefRecord nfcRecord = new NdefRecord();
nfcRecord.category = NdefRecordTypeCategory.STANDARDIZED;
nfcRecord.recordType = RECORD_TYPE_TEXT;
// According to NFCForum-TS-RTD_Text_1.0 specification, section 3.2.1 Syntax.
// First byte of the payload is status byte, defined in Table 3: Status Byte Encodings.
// 0-5: lang code length
// 6 : must be zero
// 7 : 0 - text is in UTF-8 encoding, 1 - text is in UTF-16 encoding.
nfcRecord.encoding = (text[0] & (1 << 7)) == 0 ? ENCODING_UTF8 : ENCODING_UTF16;
int langCodeLength = (text[0] & (byte) 0x3F);
nfcRecord.lang = new String(text, 1, langCodeLength, "US-ASCII");
int textBodyStartPos = langCodeLength + 1;
if (textBodyStartPos > text.length) {
return null;
}
nfcRecord.data = Arrays.copyOfRange(text, textBodyStartPos, text.length);
return nfcRecord;
}
```
--
GitHub Notification of comment by beaufortfrancois
Please view or discuss this issue at https://github.com/w3c/web-nfc/issues/566#issuecomment-740548497 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Tuesday, 8 December 2020 10:58:14 UTC