アンドロイドのあれこれ
[PR]
          ×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
NFCはじめてみます
          
              最近はAndroidのNFC(Near Field Communication)を使用するアプリを作成してみました。
案の定、小さなつまらないトラブルで長時間はまってました。
まずはNFCのタグを受け取れるようにするにはAndroidManifest.xmlにNFCのfiltering intentを設定します。 以下のサンプルをそのまま書いてみました。
http://developer.android.com/intl/ja/guide/topics/nfc/nfc.html
            
            
                                    案の定、小さなつまらないトラブルで長時間はまってました。
まずはNFCのタグを受け取れるようにするにはAndroidManifest.xmlにNFCのfiltering intentを設定します。 以下のサンプルをそのまま書いてみました。
http://developer.android.com/intl/ja/guide/topics/nfc/nfc.html
              必要なパーミッションを追加
NFCタグの基本な動作システムはACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVERED

Activityにintent-filterの追加(ACTION_TECH_DISCOVEREDの例)
ACTION_TECH_DISCOVEREDではサポートされているタグを好きなように対応するリスト作成できる。
ガッツり調べてみたり、ApiDemoのサンプルコードを読んだりしてnfc_tech_filter.xmlの中身を変えてみました。
こちらのサイトで参考しました。NexusSによるNFC調査: getTechList 編
NFC使用するアプリ開発をはじめたばっかりですが、対応端末が増えて普及になればもっともっと面白いものができそうで楽しみです。
            
                        
                                                                                               
          <uses-permission android:name="android.permission.NFC" />AndroidマーケットでNFC対応端末のみ見えるようにしたければ以下を追加
<uses-feature android:name="android.hardware.nfc" android:required="true" />
NFCタグの基本な動作システムはACTION_NDEF_DISCOVERED、ACTION_TECH_DISCOVERED、ACTION_TAG_DISCOVERED

Activityにintent-filterの追加(ACTION_TECH_DISCOVEREDの例)
ACTION_TECH_DISCOVEREDではサポートされているタグを好きなように対応するリスト作成できる。
<activity>
    <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" />
</activity>
<!-- res/xml/nfc_tech_filter.xml -->
<?xml version="1.0" encoding="utf-8"?>
<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>android.nfc.tech.NfcF</tech>
        <tech>android.nfc.tech.NfcV</tech>
        <tech>android.nfc.tech.Ndef</tech>
        <tech>android.nfc.tech.NdefFormatable</tech>
        <tech>android.nfc.tech.MifareClassic</tech>
        <tech>android.nfc.tech.MifareUltralight</tech>
    </tech-list>
</resources>
何も考えずにサイトのドキュメント通り、マニフェストに追加してみましたが、NFCかざしてみても自分のアプリには反応がなくて。。。。ガッツり調べてみたり、ApiDemoのサンプルコードを読んだりしてnfc_tech_filter.xmlの中身を変えてみました。
<!-- res/xml/nfc_tech_filter.xml -->
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <!-- capture anything using NfcF -->
    <tech-list>
        <tech>android.nfc.tech.NfcF</tech>
    </tech-list>
    <!-- capture all MIFARE Classics with NDEF payloads -->
    <tech-list>
        <tech>android.nfc.tech.NfcA</tech>
        <tech>android.nfc.tech.MifareClassic</tech>
        <tech>android.nfc.tech.Ndef</tech>
    </tech-list>
</resources>
そうするとちゃんと自分のアプリがNFCタグに反応がありました。もちろんNFCタグのタイプによりますが、ACTION_TECH_DISCOVEREDの場合はただ<tech-list> の中に全部定義しておけばいいというわけではなく、対応している必要なものだけでいいということがわかりました。こちらのサイトで参考しました。NexusSによるNFC調査: getTechList 編
NFC使用するアプリ開発をはじめたばっかりですが、対応端末が増えて普及になればもっともっと面白いものができそうで楽しみです。
COMMENT
           
         
  