gpt4 book ai didi

android 如何通过读取 NFC 标签获取 NDEF 消息有效负载的最大大小

转载 作者:行者123 更新时间:2023-12-05 00:17:44 25 4
gpt4 key购买 nike

我正在开发一个 Android 应用程序来写入 nfc 标签的特定内存位置。我需要通过读取 NFC 标签获取 NDEF 消息负载的最大大小,以便我可以定义该范围内的内存位置。

我知道它可以通过下面的代码获取整个ndef内存大小:

Ndef ndef = Ndef.get(tag);int 大小 = ndef.getMaxSize();

有什么方法可以获得最大有效负载大小吗?

任何帮助将不胜感激!

最佳答案

如果我理解正确的话,您想知道在 NDEF 消息中的单个 NDEF 记录中可以发送的最大数据量。

答案取决于您使用的 NDEF 记录格式。我使用的是外部记录类型,其末尾只有一堆字节的有效负载。据我所知,没有简单的方法来获取它,因为它将取决于您的个人域/类型字段长度,因此我实际上创建了一个“空”记录(实际上,其中有一些数据以便获取较长的长度字段格式),然后从最大值中减去其长度。

最大整体 NDEF 消息长度由兼容性容器指定,在第一次接触时从标签或设备读取,并且这因标签而异。 Android 让我们可以通过 ndefTag.getMaxSize(); 来获取该信息(其中 ndefTag 是您从 Intent 中获取的标签)

这是我正在使用的方法(我允许不同的发送和接收长度):

//here we make some sample transmissions that we convert to work out the max length of data we can send
int test_payload_len = 300; //need to make this >255 to ensure the longer length field format is used
NdefMessage testDeviceNdef = new NdefMessage(NdefRecord.createExternal(CommandConsts.deviceDomain, CommandConsts.deviceType, test_data)); //the domain and type strings are defined elsewhere
NdefMessage testTerminalNdef = new NdefMessage(NdefRecord.createExternal(CommandConsts.terminalDomain, CommandConsts.terminalType, test_data));

maxNdefDeviceSendLength = ndefTag.getMaxSize() - (testDeviceNdef.getByteArrayLength() - test_payload_len);
maxNdefTerminalSendLength = ndefTag.getMaxSize() - (testTerminalNdef.getByteArrayLength() - test_payload_len)

关于android 如何通过读取 NFC 标签获取 NDEF 消息有效负载的最大大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com