在我的应用程序中,我向NFC芯片写入了一些测量值。由于测量的数量不同,我无法定义NDEF消息的确切长度,并且实现一个在NFC读取之前计算长度并写入有效负载长度的函数对应用程序来说是不实际的。
我想要做的是将NDEF消息的大小设置为最大可用内存,并简单地写入空闲空间。然而,当使用恩智浦NFC扫描仪时,我得到一个错误,指出我的内存没有NDEF格式化。有人能告诉我我哪里做错了吗?
我目前的理解是: 0x03定义ndef格式,0xFF标志3字节长度格式,0x373是可用长度,0xC5表示单个块的ME和MB,然后0x00表示类型长度和前两个有效载荷字节,最后- 0x03和0x6D定义0x36D有效载荷长度。
初始化后的内存(开始和结束)如下所示:
发布于 2016-12-10 11:28:53
在编写消息时,您应该知道有效负载的大小。可以手动编写NDEF代码,但您需要在消息中包含每个记录的TNF、类型和有效负载。
我建议使用NdefRecord和NdefMessage对有效负载进行编码并创建消息。如果以后您有不同大小的不同有效负载,请创建一条新消息并将其写入标记。当您将消息写入标记时,它会覆盖前一条消息。
发布于 2016-12-16 19:30:51
使用Android Ndef.getMaxSize()方法确定可用的最大大小。然而,这需要实际写入虚拟数据。
一种更理想的方法是只写NDEF头,然后随着更多数据的到来而修改它。如果是这样的话,您应该注意到NDEF消息本身在实际位于标记上时被包装在一个简单的容器样式格式中。所以你必须多次更新长度。
有关示例NFCTools,请参阅
https://stackoverflow.com/questions/40913162
复制相似问题