RTD Textを書く
AndroidでRTD Textを書き込みます。反応するタグの種類の限定
NDEFを書き込めるタグの種類はNDEFタグもしくはNDEFFormatableタグなので、どちらかに反応するようにNfcAdapter#enableForgroundDispatch()を呼んであげます。
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
getClass()), 0);
IntentFilter[] intentFilter = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
};
String[][] techList = new String[][] {
{
android.nfc.tech.NdefFormatable.class.getName()
}, {
android.nfc.tech.Ndef.class.getName()
}
};
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFilter, techList);
NdefMessageの作成
書き込み対象のRTD Text RecordをもったNdefMessageを作成します。
NdefRecordの作成には
- TNF
- TYPE
- ID
- PAYLOAD
TYPEはTextRecord#RTD_TEXT を使用します。
IDは今回使用しないので空の配列を渡します。
PAYLOADは自作する必要があります。
NDEFを書き込む
タグの判定
NDEFを書き込むには、NFC反応時に発行されるIntent内に含まれるTagから
Ndef クラスもしくはNdefFormatable クラスに変換する必要があります。
また、NdefクラスとNdefFormatableクラスに親子関係はないのでどのタグなのか判定した上で、処理を別にする必要があります。
Ndefの書き込み
Ndefの場合、書き込み禁止やサイズを見ることができるので判定した上で書き込みます。
NdefFormatableの書き込み
NdefFormatableの場合、Ndefの様にタグの状態を見ることができないので
そのまま書き込みます。
ソースコード
カスタマー開発部 山下智樹
記載されている会社名、および商品名等は、各社の商標または登録商標です。
0 コメント:
コメントを投稿