RTD Textを読む
AndroidでRTD Textを読み取ります。AndroidではNdefMessageとNdefRecordのクラスが用意されています。
NdefRecordはヘッダまでしかパースされないので
PAYLOADを自分でパースする必要があります。
NDEF Messageを取得する
NdefMessageはActivity#onNewIntent(:Intent):void のIntentのExtraにNfcAdapter.EXTRA_NDEF_MESSAGESという名前で格納されています。
形式はParcelable[]なので一時的にParcelable[]で保持しておき
その中のNdefMessageを取り出します。
Ndef Recordを取得する
NdefRecordはNdefMessage#getRecords():NdefRecord[] で取得します。RTD Textの判定をする
Textの判定はTNFがWELL_KNOWNになっていることと、TYPEが'T'になっていることを確認します。NdefRecordからTNFを取得するにはNdefRecord#getTnf():shortを使います。
また、各TNFはNdefRecordに定義されているのでその定数を使います。
NdefRecordからTYPEを取得するにはNdefRecord#getType():byte[]を使います。
また、RTDのTYPEはNdefRecordに定義されているのでその定数を使います。
RTD Textをパースする
NdefRecordからPAYLOADを取得するにはNdefRecord#getPayload():byte[]を使用します。PAYLOADが取得できたので、RTD Textの仕様に従いパースしていきます。
RTD Textの仕様についてはこちらを御覧ください。
ブリリアントサービス NFC技術ブログ: RTD Textとは
例では文字列(言語コード)という内容で返しています。
実行イメージ
ソースコード
https://github.com/bs-nfc/ReadRTDTextカスタマー開発部 山下智樹
記載されている会社名、および商品名等は、各社の商標または登録商標です。
0 コメント:
コメントを投稿