NFCでシャバドゥビタッチヘンシーン!

Nexus7を買って試したかったのが「NFC」です。

せっかく試すなら、カード読み取って成功!でなくてもう一つ工夫をしたかった。

 

そこで、毎週日曜朝のお楽しみ「仮面ライダーウィザード」のウィザードライバーのスキャンをNFCで実現することを目指しました。

 

まずはNFCの基本。下記のサイトを参考にしました。

NFCの基本

AndroidアプリでNFCタグを読み書きするための基礎知識

0次発行FeliCa LiteにNDEFを書き込む

 

そして、今回の仕様は

  1. カードをスキャンしてアプリ起動(ドライバーオン)
  2. カードを読み取ってmIDによって音声を変える。(それぞれのカードがリング)

というものです。

 

3つめのブログに書いてあったようにカードを読み取るたびに新しいActivityとなっては困ります。だってリングをかざすたびにドライバーオンされては困るから。AndroidManifest.xml

android:launchMode="singleTask"

そして、あとは

StringBuilder sb = new StringBuilder();
// IDm を取得
byte[] idm = intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
for (byte b : idm) {
sb.append(String.format("%02X", b));
}
System.out.println(new String(sb));

のようにすれば読み取れるだろ、と思っていました。確かに読み取れました。しかし、2枚目のカードをスキャンしても同じmIDが入ってくるではありませんか。

launchModeをデフォルトにすれば確かに別々のmIDが読み取れる。でもそれだといちいちActivityが起動する・・・

 

悩んだあげく、「onResume」で取得していたところを「onNewIntent」に変えることで解決しました。これで現在の画面上で次々とNFC読み取りができます。

そんなこんなでひとまずアプリが完成したので、ニコ動画にアップしました。

試したカードはPasmoJALカードです。完成度の低さはまあお許しを。