NFC タグ を検出したら特定のアプリを起動する – NFC アプリの基礎


NFC アプリに特有の処理として、下記の2つがある。
(1) NFC タグ を検出したら、特定のアプリを起動する
(2) アプリを起動しているときに、NFC タグ を検出したら、何か処理する

NFCタグ を検出したら、特定のアプリを起動するには、下記を設定する。
(1) AndroidManifest.xml に uses-permission と intent-filter を設定する。
(2) res/xml/nfc_tech_filter.xml に tech-list を設定する。

uses-permission と intent-filter は、おなじみなので省略する。
tech-list には、検出したいNFCタグの種別を記述する。
tech-list の詳細は、NFCの基本 を参照のこと。
NFCタグの種別は、TagTechnology を参照のこと。

AndroidManifest.xml の例

<uses-permission android:name="android.permission.NFC" />
<activity 
	android:name=".MainActivity"
	android:label="@string/app_name" >
 <intent-filter>
  <action android:name="android.nfc.action.TECH_DISCOVERED" />
  <category android:name="android.intent.category.DEFAULT" />
 </intent-filter>
 <meta-data
  android:name="android.nfc.action.TECH_DISCOVERED"
  android:resource="@xml/nfc_tech_filter" />
</activity>

res/xml/nfc_tech_filter.xml の例
Type-A, Type-B, Type-F(Felica) に反応する。

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
 <tech-list>
  <tech>android.nfc.tech.NfcA</tech>
 </tech-list>
 <tech-list>
  <tech>android.nfc.tech.NfcB</tech>        
 </tech-list>
 <tech-list>
  <tech>android.nfc.tech.NfcF</tech>        
 </tech-list>
</resources>

注意
NFCの基本 には、下記が掲載されているが、これは動作しない。
tech-list は、全てを満たすNFCタグに反応する。この例では IsoDep, NfcA, NfcB, … の全てを満たすNFCタグとなり、これは存在しない。
上記のように tech-list を複数記述のが正しい。

<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.IsoDep</tech>
        <tech>android.nfc.tech.NfcA</tech>
        <tech>android.nfc.tech.NfcB</tech>
   ...
    </tech-list>
</resources>

参考
Android 開発ガイド: NFC の基本
Android NFC アプリハンズオン by tomorrowkey
NexusSによるNFC調査: getTechList 編
reference: TagTechnology

関連
NFC 神経衰弱ゲーム
・NFC タグ を検出したら特定のアプリを起動する – NFC アプリの基礎
アプリを起動しているときに NFC タグを検出したら処理する – NFC アプリの基礎


コメントを残す

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