私はGingerbread 2.3.4を搭載したNexus Sを持っており、最近、書き込み可能なNFCタグをいくつか入手しました。これまでのところ、空白のタグとして読み取ることはできますが、データを書き込む方法が見つかりませんでした。
すべての調査の結果、次の記事にたどり着きました: 1 月からNexus S でタグを書く( 2.3.4 リリース前)。
Nexus S を使用して、アプリケーション内で NFC タグをどのように記述しますか? ポインタはありますか?
私はGingerbread 2.3.4を搭載したNexus Sを持っており、最近、書き込み可能なNFCタグをいくつか入手しました。これまでのところ、空白のタグとして読み取ることはできますが、データを書き込む方法が見つかりませんでした。
すべての調査の結果、次の記事にたどり着きました: 1 月からNexus S でタグを書く( 2.3.4 リリース前)。
Nexus S を使用して、アプリケーション内で NFC タグをどのように記述しますか? ポインタはありますか?
Android NFC APIのテキストと開発ガイドを理解するのは少し難しいので、ここで少しサンプルコードが役立つかもしれません。これは実際には、Nokia 6212デバイスで使用しているMIDPコードの移植版であるため、Android NFC APIに関するすべてをまだ正しく理解していない可能性がありますが、少なくともこれはうまくいきました。
まず、NDEFレコードを作成します。
private NdefRecord createRecord() throws UnsupportedEncodingException {
String text = "Hello, World!";
String lang = "en";
byte[] textBytes = text.getBytes();
byte[] langBytes = lang.getBytes("US-ASCII");
int langLength = langBytes.length;
int textLength = textBytes.length;
byte[] payload = new byte[1 + langLength + textLength];
// set status byte (see NDEF spec for actual bits)
payload[0] = (byte) langLength;
// copy langbytes and textbytes into payload
System.arraycopy(langBytes, 0, payload, 1, langLength);
System.arraycopy(textBytes, 0, payload, 1 + langLength, textLength);
NdefRecord record = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
NdefRecord.RTD_TEXT,
new byte[0],
payload);
return record;
}
次に、レコードをNDEFメッセージとして書き込みます。
private void write(Tag tag) throws IOException, FormatException {
NdefRecord[] records = { createRecord() };
NdefMessage message = new NdefMessage(records);
// Get an instance of Ndef for the tag.
Ndef ndef = Ndef.get(tag);
// Enable I/O
ndef.connect();
// Write the message
ndef.writeNdefMessage(message);
// Close the connection
ndef.close();
}
タグに書き込むには、明らかに、インテントから取得できるTagオブジェクトが必要です。
ここでは少し遅れているかもしれませんが、便利なNDEFレコードを作成、読み取り、書き込みするためのライブラリを作成しました。
ご存知かもしれませんが、ネイティブのAndroid NdefMessageクラスとNdefRecordクラスはバイト配列ラッパーにすぎないため、NDEF標準はNFCフォーラム標準内で非常によく指定されていますが、Androidでは現在適切な高レベルのサポートがありません。
プロジェクトには、読み取り、書き込み、ビームテンプレートアクティビティも含まれます:-)
多くのNFC互換チップのメーカーであるNXPは、NFCタグを操作するための無料のクローズドソースアプリを作成しています。私はそれでかなりの数のタグを書きました。
参照:NXPNFCタグライターアプリ
https://market.android.com/details?id=com.nxp.nfc.tagwriter
そのためのコードを記述したい場合は、inazarukのリンクが役立ちます。または、O'Reillyの「ProgrammingAndroid」オンラインブックを試すこともできます。NFCセクションがあります:
http://programming-android.labs.oreilly.com/ch16.html#ch18_id316624
これは最高の本ではありません-密度が高すぎて、一部の部分の記述が不十分です-しかし、Androidの本とは別に、これまでに実際に見たのはNFCセクションとコードサンプルだけです。
NXPのタグライターは、タグを作成するための優れたアプリケーションです。
クラウドでタグをエンコードおよび管理するためのアプリケーションを持っている私の会社は、最近シアトルでワークショップを開催し、AndroidでNFCタグを読み書きするプロセスを開発者に説明しました。
NFCタグの読み取りと書き込みに関するブログ投稿では、コードをウォークスルーし、実際のワークショップからのサポートビデオクリップを用意しています。
これが一部の開発者がNFCを使い始めるのに役立つことを願っています!
NDEFデータを書き込むには、Ndef.writeNdefMessage()APIを使用できます。
非NDEFデータを書き込みたい場合は、NfcA.transceive()、NfcB.transceive()、IsoDep.transceive()などの低レベルのトランシーバーAPIを使用できます。通信しているタグとそのコマンド/応答についての高度な知識が必要になります。これはお勧めしません。
NDEFは標準のデータ形式であり、Androidやその他のNFCプラットフォームで簡単に読み戻すことができます。