10

私はGingerbread 2.3.4を搭載したNexus Sを持っており、最近、書き込み可能なNFCタグをいくつか入手しました。これまでのところ、空白のタグとして読み取ることはできますが、データを書き込む方法が見つかりませんでした。
すべての調査の結果、次の記事にたどり着きました: 1 月からNexus S でタグを書く( 2.3.4 リリース前)。

Nexus S を使用して、アプリケーション内で NFC タグをどのように記述しますか? ポインタはありますか?

4

5 に答える 5

16

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オブジェクトが必要です。

于 2011-06-13T13:53:06.507 に答える
2

ここでは少し遅れているかもしれませんが、便利なNDEFレコードを作成、読み取り、書き込みするためのライブラリを作成しました。

ご存知かもしれませんが、ネイティブのAndroid NdefMessageクラスとNdefRecordクラスはバイト配列ラッパーにすぎないため、NDEF標準はNFCフォーラム標準内で非常によく指定されていますが、Androidでは現在適切な高レベルのサポートがありません。

プロジェクトには、読み取り、書き込み、ビームテンプレートアクティビティも含まれます:-)

于 2012-11-26T23:32:37.557 に答える
1

多くの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セクションとコードサンプルだけです。

于 2011-06-09T15:40:42.387 に答える
0

NXPのタグライターは、タグを作成するための優れたアプリケーションです。

クラウドでタグをエンコードおよび管理するためのアプリケーションを持っている私の会社は、最近シアトルでワークショップを開催し、AndroidでNFCタグを読み書きするプロセスを開発者に説明しました。

NFCタグの読み取り書き込みに関するブログ投稿では、コードをウォークスルーし、実際のワークショップからのサポートビデオクリップを用意しています。

これが一部の開発者がNFCを使い始めるのに役立つことを願っています!

于 2012-08-02T17:00:58.497 に答える
0

NDEFデータを書き込むには、Ndef.writeNdefMessage()APIを使用できます。

非NDEFデータを書き込みたい場合は、NfcA.transceive()、NfcB.transceive()、IsoDep.transceive()などの低レベルのトランシーバーAPIを使用できます。通信しているタグとそのコマンド/応答についての高度な知識が必要になります。これはお勧めしません。

NDEFは標準のデータ形式であり、Androidやその他のNFCプラットフォームで簡単に読み戻すことができます。

http://developer.android.com/reference/android/nfc/tech/Ndef.html#writeNdefMessage(android.nfc.NdefMessage

于 2011-06-09T17:49:14.990 に答える