있어서 NdefRecord.createTextRecord()
이 결과, 그 API 레벨 이하 플랫폼 API를 사용할 수없는 수준 (21)에 도입 하였다. 그러나 독자적으로 텍스트 레코드를 쉽게 조합 할 수 있습니다.
+-------------+---------------+--------------------------+
| Status byte | Language code | Text |
| (1 byte) | (n byte) | (m byte) |
+-------------+---------------+--------------------------+
- 상태 바이트가 텍스트 필드의 문자 인코딩 (
0
= UTF-8, 1
을 나타냅니다 텍스트 레코드의 페이로드는 상태 바이트 언어 코드 필드 및 텍스트 필드로 구성 = UTF-16) 및 비트 코드 5.00의 언어 코드의 길이 n
. 비트 6은 항상 0이어야합니다.
- 언어 코드 입력란에 US-ASCII로 인코딩 된 IANA 언어 코드 (예 : 'en')가 포함되어 있습니다.
당신은이 방법을 사용하여 텍스트 기록을 만들 수 있습니다
public static NdefRecord createTextRecord(String language, String text) {
byte[] languageBytes;
byte[] textBytes;
try {
languageBytes = language.getBytes("US-ASCII");
textBytes = text.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
throw new AssertionError(e);
}
byte[] recordPayload = new byte[1 + (languageBytes.length & 0x03F) + textBytes.length];
recordPayload[0] = (byte)(languageBytes.length & 0x03F);
System.arraycopy(languageBytes, 0, recordPayload, 1, languageBytes.length & 0x03F);
System.arraycopy(textBytes, 0, recordPayload, 1 + (languageBytes.length & 0x03F), textBytes.length);
return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, null, recordPayload);
}
NdefRecord r = createTextRecord("en", content);
도움을 주셔서 감사합니다. 이제는 정상적으로 작동합니다. –