1、首先C#的NDEF的库安卓:
https://mp.csdn.net/postedit/91383417
2、然后在封装NDEF的前面数据前面还有加一堆数据,TAG类型
block_data[0] = 0xE1;
block_data[1] = 0x40;
block_data[2] = 0x0E;
block_data[3] = 0x01;
block_data[4] = 0x03;
block_data[5] = NDEF包的长度
参考这篇文章 https://oomake.com/question/3675861
=========================================
Windows Phone 8应用程序只能访问非常高级别的库,并且无法读取非NDEF格式的标签。 MIFARE UL标签必须使用NFC论坛NDEF Type 2标准,由于标签的48字节用户内存很小,因此标准简单。 如果您有一个低级别的读写器,您可以在不修改大部分数据的情况下使您的UL标签符合NDEF标准,但您需要牺牲:
-
第3页的所有4字节OTP内存(对于NDEF能力容器)
-
用户可编程存储器的前6个字节(最少6个,可能需要填充到8以便干净地填充前两页)。
标签的格式如下:(参考 - www.nfc-forum.org/specs/spec_list/#tagtypes)
-
第3页,BYTES 0-3:CC [MAGIC NUMBER,VERSION,USER MEM SIZE,READ / WRITE]
-
第4页,BYTES 0-1:NDEF MESSAGE TLV HEADER [类型,长度](推荐类型为ExternalRtd)
-
第4页,BYTES 2-3:RECORD DESCRIPTOR(包含一个指定记录类型的字符串,建议将其保留1个字节以节省空间,或者3个字节长以进行整齐填充)
-
第5页,BYTES 0-1或3:记录描述符
-
REST OF PAGES / BYTES是记录/数据
示例:Tag的消息类型为ExternalRtd,记录类型为“abc”(记录类型在技术上应该是“urn:nfc:ext:companyname.com:typename”格式,完全符合NDEF标准,但我们负担不起那么多空间) [页号,字节号],价值,评论
-
[3,0],0xE1,幻数
-
[3,1],0x10,NDEF版本号,主要版本1,次要版本0。
-
[3,2],0x06,标签的用户内存大小/ 8.在这种情况下为6,因为6 * 8 = 48
-
[3,3],0x00,允许读/写。 0x00 =允许写入,0x0F =只读
-
[4,0],0x03,TLV中的T,类型。在这种情况下,是NDEF消息。
-
[4,1],0x2E,TLV中的L,长度。在这种情况下,标记的其余部分为46个字节。
-
[4,2],0xD4,记录MB_ME_CF_SR_IL_TNF。在这种情况下,11010100(是第一条记录,是最后一条记录,不是块,是短消息,标题中没有id,是“外部类型”类型)
-
[4,3],0x03,记录类型长度。在这种情况下3(类型“abc”是3长)
-
[5,0],0x28,Payload Length,标签的其余部分。在这种情况下40。
-
[5,1],0x61,类型的第一个字节,0x61 = 97 ='a'
-
[5,2],0x61,类型的第二个字节,0x62 = 98 ='b'
-
[5,3],0x61,类型的第三个字节,0x63 = 99 ='c'
-
标记的剩余40个字节(第6到11页)是您的有效负载。
如果您只想初始化标签以便手机可以读取它并完成其余的操作,只需写入CC,并且只有TL为零且不为V的TLV。(4,0 = 0x03和4,1 = 0x00 )。
3 下载DEMO