2016-12-01 84 views
0

在我的应用程序中,我正在向NFC芯片写入大量测量数据。由于测量次数不同,我无法定义NDEF消息的确切长度,并且在NFC读取之前写入有效负载长度的功能会对应用程序实际不适用。如何为可变长度有效载荷格式化NDEF消息?

我想要做的是将NDEF消息的大小设置为最大可用内存并简单地写入空闲空间。但是,在使用恩智浦NFC扫描仪时,出现内存不是NDEF格式的错误。谁能告诉我我做错了什么?

我目前的理解是:0x03定义ndef格式,0xFF标志3字节长度格式,0x373是可用长度,0xC5标识单个块的ME和MB,然后0x00为类型长度和前两个有效负载字节,最后 - 0x03和0x6D定义了0x36D净荷长度。

初始化后的内存(开始和结束),可以看到下面: enter image description here enter image description here

+1

如何创建和写入NDEF消息?您是否使用Android内置的方法,或者您自己的方法? – corvairjo

回答

0

你应该知道有效载荷的在当时的大小写邮件。可以手工编写NDEF,但是您需要在消息中包含每个记录的TNF,类型和有效负载。

我推荐使用NdefRecordNdefMessage来编码有效负载并创建消息。如果在稍后的日期您有不同的有效载荷和不同的大小,请创建一条新消息并将其写入标签。当您向标签写入消息时,它会覆盖以前的消息。

0

使用Android Ndef.getMaxSize()方法确定可用的最大大小。然而,这实际上需要编写虚拟数据。

更好的方法是只写NDEF标题,然后在更多数据进来时修改它。如果是这样,你应该注意到NDEF消息iself在实际打开时被包装在一个简单的容器样式格式中标签。所以你必须不止一次地更新长度。

参见示例NFCTools

+0

这不提供问题的答案。要批评或要求作者澄清,请在其帖子下方留言。 –