NFCとAndroid SDKバージョン

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を読み取ろうとするため
不必要になったら元に戻す処理を忘れずに

コメントを残す

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