ST意法半导体
直播中

刘丹

7年用户 1423经验值
私信 关注
[问答]

ST25DV16K和Android 8.0的问题如何解决?

嗨ST社区,
我无法让 ST25DV16k 标签中的 NDEF 记录被 Android 8.0 识别,我已经阅读了 AN4910 和 AN4911 并了解 Android 8.1 中关于 NDEF 和 CC 标头的限制,但我的问题是即使我克隆了从工作的 ST25DV04K 标签到 ST25DV16K 的内存内容,Android 8.1 智能手机仍然无法识别 16K 标签,以下是两个标签的内存内容:


从图像中可以看出,04K 标签的全部内容都被镜像到 16K 标签中,包括 CC 文件和 NDEF 标头,因此出于所有意图和目的,16K 标签必须被解释为 512 字节标签,并且NDEF 记录(ST 网站)必须正确识别,对吧?
Android 8.0手机正确识别04K标签记录并打开网站,但在呈现16k标签时只给出打开ST25 app的选项,显示android系统无法识别NDEF记录。
在装有 Android 10 的智能手机中,两个标签都被正确识别并打开了网站。
有人可以帮助理解为什么我会看到这种行为吗?
两个标签都有相同的 NFC 命令集,对吧?所以他们不应该被Android系统区别对待。
而如果我设置CC文件限制tag为512bytes,Android系统应该会把它当作512bytes的tag吧?







回帖(1)

王赛

2023-1-9 11:38:18
Android 9 中添加了对“具有扩展内存的 NFC Type 5 标签”的支持。对于早期的 Android 版本,无法本地读取内存超过 2040 字节的任何 NFC 标签。  
“而如果我设置CC文件限制标签为512bytes,Android系统应该将其视为512字节的标签,对吧?”
不幸的是,此解决方法不起作用。在Android 9之前的Android版本中,有一段代码会检查getSystemInfo()命令返回的大小和CCFile中指示的大小。如果这 2 个尺寸不匹配,Android 堆栈会引发错误并且不会继续。这就是阻止本地读取具有扩展内存(内存大小 > 2040 字节)的标签内容的原因。
如果您可以使用 ST25DV04K,则不会出现此问题,因为它不使用扩展内存。它适用于每个 Android 版本。
供您参考,当使用 ST25DV16K 或 ST25DV64K 时,可以开发 Android 应用程序。此应用程序可以设置一些过滤器,以便在点击 Type5 标签时收到通知。它可以读取标签的内容并执行您想要的操作。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分