2012年7月19日木曜日

NFCに関連するActionについて

NFCに関するActionの種類


AndroidでNFCに関するActionは以下の3つがあります。

  • ACTION_NDEF_DISCOVERED
  • ACTION_TECH_DISCOVERED
  • ACTION_TAG_DISCOVERED

NFCタグが検出されるといずれかのActionのIntentが発行されます。
どういう場合に発行されるか説明します。

  • ACTION_NDEF_DISCOVERED
    • タグがNDEFでフォーマットされていた場合に、このActionで発行されます。
    • タグの種類によってフィルタリングすることができます。
    • IntentのExtra内にNDEFの情報が含まれます。
    • 最も優先順位が高いです。
  • ACTION_TECH_DISCOVERED
    • 上記のActionで反応するアプリがなかった場合に、このActionで発行されます。
    • タグがNDEFでフォーマットされていなかった場合、一番優先度が高いです。
    • タグの種類によってフィルタリングすることができます。
  • ACTION_TAG_DISCOVERED
    • 上記2種類のActionで対応するアプリがなかった場合に、このActionで発行されます。
    • このActionで指定していればどんなNFC Tagタイプでも反応することができますが、上記2つのActionでアプリが起動した場合、反応することができません。
    • 一番優先度が低いです。

Actionの優先度とは



タグの種類によってスタート地点が異なります。
タグがNDEFにフォーマットされている場合、ACTION_NDEF_DISCOVEREDの判定が行われます。
端末にインストールされているアプリでACTION_NDEF_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
ACTION_NDEF_DISCOVEREDを処理できるアプリが存在しなかった場合、もしくはタグがNDEFでフォーマットされていない場合は
ACTION_TECH_DISCOVEREDの判定が行われます。
ACTION_TECH_DISCOVEREDはタグの種類によってフィルタリングすることが可能なIntentです。
(たとえばTypeAにのみ反応するアプリや、TypeFのみに反応するアプリなど)
端末にインストールされているアプリでACTION_TECH_DISCOVEREDを処理できるアプリが存在した場合
そちらにIntentが渡されます。
上記2つのActionを処理できるアプリが存在しなかった場合、ACTION_TAG_DISCOVEREDが発行されます。

Actionを優先順位順に並べると
ACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVEREDとなり
優先順位の高い方から処理可能か判定されます。
途中で処理可能と判定された場合、優先順位の低いActionの判定は行われません。

アプリを作る際に注意しなければならないのは、どのようなタグに反応するアプリなのか決定し
できるだけ優先順位の高いActionで起動できるようにすること
安易にACTION_TAG_DISCOVEREDを指定すると、優先順位の高いアプリにIntentを奪われて起動されない事があります。

カスタマー開発部 山下智樹

140 180 Android , NFC

記載されている会社名、および商品名等は、各社の商標または登録商標です。

0 コメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...