使用Nexus S编写NFC标签

时间:2011-06-08 18:23:08

标签: android nfc nexus-s

我有 Gingerbread 2.3.4 支持 Nexus S ,我最近获得了一些可写的 NFC 标签。到目前为止,我可以将它们读作空白标签,但我找不到向它们写入数据的方法 我的所有研究都引导我阅读这篇文章:1月Writing tags with Nexus S 2.3.4发布之前)。

如何使用Nexus S在应用程序中编写NFC标签?有什么指针吗?

9 个答案:

答案 0 :(得分:16)

我发现Android NFC API文本和开发指南有点棘手,所以一些示例代码可能会有所帮助。这实际上是我在诺基亚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对象,您可以从Intent获取。

答案 1 :(得分:2)

也许我在这里有点晚了,但我写了library来创建,阅读和编​​写你可能觉得有用的NDEF记录。

您可能已经了解到,本机Android NdefMessage和NdefRecord类只是字节数组包装器,因此虽然NDEF标准在NFC论坛标准中已经很好地指定,但目前Android中没有适当的高级支持。

该项目还包括读,写和梁模板活动: - )

答案 2 :(得分:1)

Android Dev Guide中的这篇文章可能会对您有所帮助:Writing to an NFC Tag

答案 3 :(得分:1)

我使用免费的NFC Tagwriter应用程序编写了几个

https://market.android.com/details?id=com.nxp.nfc.tagwriter

答案 4 :(得分:1)

许多NFC兼容芯片的制造商恩智浦制造了一款免费但封闭的源应用来操纵NFC标签。我用它写了很多标签。

请参阅:恩智浦NFC Tagwriter应用程序

https://market.android.com/details?id=com.nxp.nfc.tagwriter

如果你想编写代码来这样做,inazaruk的链接有帮助,或者你可以尝试O'Reilly“Programming Android”在线书籍。它有一个NFC部分:

http://programming-android.labs.oreilly.com/ch16.html#ch18_id316624

这不是最好的书 - 我发现它太密集了,而且有些部分写得不好 - 但它的NFC部分和代码样本是我见过的唯一一个与Android不同的部分。

答案 5 :(得分:0)

要编写NDEF数据,您可以使用Ndef.writeNdefMessage()API。

如果要编写非NDEF数据,则可以使用低级收发API,如NfcA.transceive(),NfcB.transceive()或IsoDep.transceive()。您需要掌握与之通信的标签及其命令/响应的高级知识。我不推荐这个。

NDEF是标准数据格式,可以通过Android和其他NFC平台轻松回读。

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

答案 6 :(得分:0)

这可能会有所帮助:

http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/

我在实习期间做了一些NFC工作,写了一篇关于如何从NFC标签上写/读的教程。

答案 7 :(得分:0)

此链接有一个示例代码,用于编写带解释的标记。 http://www.jessechen.net/blog/how-to-nfc-on-the-android-platform/ 检查sticknote演示

答案 8 :(得分:0)

恩智浦的标签写作器是一个很好的写标签应用程序。

我的公司有一个在云中编码和管理标签的应用程序,最近在西雅图举办了一个研讨会,让读者在Android中阅读和编写NFC标签。

readingwriting NFC标签的博客文章遍历代码,并提供实际研讨会的支持视频片段。

希望这有助于一些开发人员开始使用NFC!