2011年7月30日土曜日

NFCを使ってみる その1


NFCを使用した簡単なアプリを作成しようと思います。
まずはTAGを受け取れるようになるまで。

AndroidManifest.xmlに必要なパラメータを記載

NFCハードウェアを使用するために必要なパーミッションを追加
<uses-permission android:name>"android.permission.NFC" />


AndroidMarketにUpする際、NFC機能搭載端末のみ見えるようにするuses-featureを追加
<uses-feature android:name="android.hardware.nfc" android:required"true" />


ActivityでNFCデータをハンドリングしたい場合、inten-filterを追加
<intent-filter>
    <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<data android:mimeType="mime/type"/><
/intent-filter>


<intent-filter>
    <action android:name="android.nfc.action.TAG_DISCOVERED"/>
</intent-filter>

<intent-filter>
    <action android:name="android.nfc.action.TECH_DISCOVERED"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
                android:resource="@xml/nfc_tech_filter" />

必要な<intent-filter>を記載しましょう。

<meta-data ・・・>はandroid.nfc.action.TECH_DISCOVERED用のタグです。
プロジェクトの「/res/xml」に 受け取りたいNFC規格を記載した「nfc_tech_filter.xml」を追加します。

詳しくはDeveloperサイトを参照



    android.nfc.tech.IsoDep
    android.nfc.tech.NfcA
    android.nfc.tech.NfcB
    android.nfc.tech.NfcF
    android.nfc.tech.NfcV
    android.nfc.tech.Ndef
    android.nfc.tech.NdefFormatable
    android.nfc.tech.MifareClassic
    android.nfc.tech.MifareUltralight




必要な<tech>タグのみ記載しましょう。

ちなみに、ここに記載する<tech>は「\frameworks\base\core\java\android\nfc\tech」に存在するクラス名です。


これだけで、SuiccaやICOCAなどのFelicaカードを端末にかざすと、android.nfc.action.XXXXのIntentを受けてActivityが起動します。