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));