方法NdefRecord.createTextRecord()
はしたがって、それはAPIレベル以下のプラットフォームで利用できないAPIレベル21に導入されました。しかし、あなた自身でTextレコードを簡単に組み立てることができます。
+-------------+---------------+--------------------------+
| Status byte | Language code | Text |
| (1 byte) | (n byte) | (m byte) |
+-------------+---------------+--------------------------+
- ステータスバイトがテキストフィールドの文字エンコーディング(
0
= UTF-8、1
を示し:テキストレコードのペイロードには、ステータスバイト、言語コードフィールド、およびテキストフィールドで構成されてい= UTF-16)と、ビットコード5..0の言語コードの長さn
。ビット6は常にゼロでなければなりません。
- 言語コードフィールドには、US-ASCII(「en」など)でエンコードされたIANA言語コードが含まれています。
あなたは、このメソッドを使用したテキストレコードを作成することができます。
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);
助けてくれてありがとう、今はうまくいきます –