NFCとAndroid SDKバージョン
NFCは、API level 9から使えるけど
NFC関連のAPIがあまりないため
実際には、API level 10からを使うことになる
また、NFCで利用できるインテントアクションは
以下の3つになる
ACTION_NDEF_DISCOVERED
優先度は高い
タイプがNDEFフォーマットのとき発行される
MIMEタイプや
URIスキームを指定することで
細かくフィルタリングできる
ACTION_TECH_DISCOVERED
優先度は普通
これは、タグの種類に起因して発行される
起因されるタグの種類は、
事前にxmlファイルで指定する
ACTION_TAG_DISCOVERED
優先度は低い
これは、タグがあれば発行される
ただし、
ACTION_NDEF_DISCOVERED
ACTION_TECH_DISCOVERED
に引っかからないときのみ有効
あと、NFCの利用の可否は
2つのアプローチから確認可能
デバイスがNFCをサポートしてるか判定するなら
NfcAdapter.getDefaultAdapter(this);
このように
NfcAdapterの
getDefaultAdapter()を使って
インスタンスを取得できれば
NFCがサポートされている
この結果が nullなら、サポートしてないことになる
2つめの方法として
デバイスのNFC機能がonになっているか判定
mNfcAdapter.isEnabled()
[/java]
このように
NfcAdapterの
isEnabled()の結果が true なら
NFC機能が使える
もし、false なら、NFC機能は使えない
あと、NFCは受け取る優先度の指定ができる
複数のNFCアプリをインストールした状態で
NFCタグを読みとると
識別のフィルターまで同じだと
該当する複数のNFCアプリが起動してしまう
イメージとしては、Suicaと一緒に
ほかの
電子マネーをかざしたようなかんじになる
これを防ぐには
NFCの読みとる優先度を指定する
起動中のActivityでNFCを優先的に読み取りたいのなら
NfcAdapterの
enabledForegroundDispatch()
を使う
このときに変えた優先度を元に戻すなら
disableForegroundDispatch()
を使う
ちなみに、一度上げた優先度は
元に戻すまで優先的にNFCを読み取ろうとするため
不必要になったら元に戻す処理を忘れずに