我有 Gingerbread 2.3.4 支持 Nexus S ,我最近获得了一些可写的 NFC 标签。到目前为止,我可以将它们读作空白标签,但我找不到向它们写入数据的方法 我的所有研究都引导我阅读这篇文章:1月Writing tags with Nexus S( 2.3.4发布之前)。
如何使用Nexus S在应用程序中编写NFC标签?有什么指针吗?
答案 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应用程序编写了几个
答案 4 :(得分:1)
请参阅:恩智浦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平台轻松回读。
答案 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)