2013年2月2日土曜日

NFCタグにURLを書き込む

NFCタグシールを購入しました。
価格は一枚あたり約300円でした




このNFCタグへURLの書き込みを行いました。

NdefFormatableのハンドリング

NdefFormatableのTag配信をハンドリングするための準備
AndroidManifest.xmlの記載
NFCを使うためのPermision
<uses-permission android:name="android.permission.NFC" />

<uses-feature
    android:name="android.hardware.nfc"
    android:required="true" />


Intent-filterの追加
<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_list" />


Tech-ListのXmlを作成
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <tech-list>
        <tech>android.nfc.tech.NdefFormatable</tech>
    </tech-list>
</resources>


Activity側でTagを受信
IntentからTag情報を取得
if (getIntent().getAction().equals(NfcAdapter.ACTION_TECH_DISCOVERED)) {
    Tag tag = getIntent().getParcelableExtra(NfcAdapter.EXTRA_TAG);
}


NFCタグへURLを書き込む
NdefFormatable.get(tag)でNdefFormatableクラスを取得し、write処理を行う。
    public void write(Tag tag, String uri) {
        NdefRecord rtdUriRecords[] = {
                NdefRecord.createUri(uri)
        };
        NdefFormatable ndef = NdefFormatable.get(tag);
        NdefMessage message = new NdefMessage(rtdUriRecords);
        try {
            ndef.connect();
            ndef.format(message);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (FormatException e) {
            e.printStackTrace();
        } finally {
            try {
                ndef.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

0 件のコメント:

コメントを投稿