UIDの取得

UIDの取得

タグはデータタイプにより読み込み方法が変わるが
UID取得は変わらない 

UIDの取得は、タグの読み込みがどういうものか知るキッカケとしては適している

NFCアプリでは、読み込んだタグに含まれるタグ情報は
インテントデータを介して受信する

このため、タグ情報を含んだインテントを
Activity上で受けとるには
onNewIntentクラスを使う

ただし、onNewIntentで受けとるインテントデータは
NFCデータだけではないから
インテントを受け取ったときに
NFCのインテントアクションか判定する必要がある

ソースにすると
protected void onNewIntent(Intent intent){
super.onNewIntent(intent);
String action = intent.getAction();

if(NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)
|| NfcAdapter.ACTION_TECH_DISCOVERED.equals(action)){

という判定をする
.equals()を使うのはJavaではよくある
理由は、
Stringはクラスなので不等号比較ができないから

詳しくは、サーチマンさんのサイトの解説

条件式(if文)で文字列の比較はequals()メソッド
http://www.searchman.info/tips/2770.html
をみるとわかりやすい

今回のように
NFCのインテントアクションなら
インテント内にNFCのタグ情報が含まれているので
UIDを取得できる

UIDはバイト列で格納されていて
intent.getByteArrayExtra()
のキーに
NfcAdapter.EXTRA_IDを指定すれば取得できる

UIDは、バイト列での取得なので
UIDとして画面出力するには
16進数に変換しないとみてもわからない

ソースにすると
UID取得は
byte[] uid = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);

UIDを文字列変換して表示するには
TextView txtuid =(TextView)findViewById(R.layout.txtuid);
txtuid.setText(NfcUtil.bytesToHex(uid));

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です