AndroidでNFCのIDmを読み取るサンプル
2010年の年末に発表されたAndroidの2.3からAPIがNFCに対応して、
さらに2011年の年末にNTT DocomoからNFC対応端末Galaxy Nexus, Galaxy SⅡ LTEが発売されて、Androidの開発者の中でもNFCが注目されてきた。
実際に日本で普及が加速度的に進んでいるかとうと疑問符が付くが、天下のS○NY様がいるからだろうか。(これ以上言うとおこられるのであまり深くは…)
で、とりあえずでもNFCのタグを読んでみたいと思うのが人情、
NFCには一意特定出来る(完全に一意ではないらしい)IDmという値があります。すぐに偽装出来てしまうのでこれを信じてアプリケーションを組んでしまうとNGですがセキュリティとか関係ないようなアプリでは、簡単に試せるのでいいのではないでしょうか?
ということでサンプルです。
サンプルは「ReadNFC」という名前でgithubにアップしています。
まず、NFCを読み取る為には、「AndroidManifest.xml」を修正する必要があります。
2行目を追加しないとパーミッションエラーでNFCが使えません。
4行目の「uses-feature」は、NFC対応端末のみにマーケットで表示する場合は必要になります。
次にNFCを近づけた場合のIntentFilterの設定です。
NFCのインテントフィルターは3種類あり、上から順番に優先順位が高いです。
ACTION_NDEF_DISCOVERED | NDEFペイロードが見つかったときにActivityを起動するIntent |
---|---|
ACTION_TECH_DISCOVERED | タグが見つかり、Intentの技術として登録されている場合にActivityを起動するIntent |
ACTION_TAG_DISCOVERED | タグが見つかった時にActivityを起動するIntent |
「ACTION_TECH_DISCOVERED」で対象の技術を登録する方法は、18行目指定しているxmlにあります。
内容は、
このような内容です。
ここに記述する種類は、android.nfc.techに記述されています。
Intentを受信したら、IDmの取得方法です。
onNewIntentで渡ってきたintentから、「intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);」で取得できるbyte[]を取得します。
取得したbyte[]から12行目で文字列に変換します。
これで文字列でIDmが取得出来るので、アプリで利用してみて下さい。
関連する記事:
- 暗黙的インテントの呼び出しでActivityNotFoundExceptionを防ぐ方法
- AndroidManifest.xmlに記述した
のデータ取得方法 - AndroidでAlarmManagerの動作を確認するサンプルプログラム
- AndroidのRingtoneManagerの動作を確認するサンプル
- Androidのサービスでintentを使うとNullPointerExceptionで落ちるのを回避
コメント 0