当前位置: 首页 > 知识库问答 >
问题:

Android设备阅读NFC技术列表时的怪异行为

竺国兴
2023-03-14

我正在尝试从2个设备(Nexus 5和Samsung S5)读取NFC标签。

我正在通过前台调度读取标记,并使用action_tech_discoveredintent。在Samsung S5上,Tech列表列出了NFCAMIFARECLASSNDEF,但在Nexus 5上,它只列出了NFCA

我知道Nexus 5不支持恩智浦的MIFARE Classic标签。因此,我理解了为什么它没有列出MIFAREClassic。但是为什么它也不在tech列表中显示ndef呢?

当我尝试使用action_ndef_discoveredintent读取标签时,三星S5读取得很好,而Nexus5甚至没有检测到。

共有1个答案

翁昊乾
2023-03-14

这并不奇怪,而是意料之中的行为:

正如您自己发现的那样,Nexus 5不支持MIFARE Classic而三星S5支持。MIFARE Classic的问题在于它使用ISO/IEC 14443-3中定义良好的防冲突机制,因此可以在所有Android NFC设备上检测到。除标准化防冲突功能外,MIFARE Classic还使用专有协议(其帧结构略有不同,并使用专有加密算法)。由于恩智浦不为该协议的阅读器端提供许可证,因此只有恩智浦芯片组实现该协议。因此,只有采用恩智浦芯片组的设备(如Samsung S5,内置PN547 NFC控制器)才能访问MIFARE Classic卡上的数据。其他设备(如采用Broadcom NFC芯片组(如Nexus 5)或采用S5 mini等三星NFC芯片组的设备)不支持MIFARE Classic协议,因此无法访问存储在这些芯片上的数据。

因此,由于平台不支持发送MIFARE Classic命令(您可以使用MIFAREClassic技术对象),MIFAREClassic标记技术不会显示在这些设备上。此外,不能发送存储器访问命令,也意味着存储在标签上的数据不能被访问。这就是为什么没有显示NDEF技术的原因:NDEF是NFC标签之上的数据抽象层,因此,不能访问数据意味着也不能通过NDEF抽象层访问相同的数据。因此,提供ndef技术对象是没有意义的,因为您无论如何都不能使用它来访问数据。

 类似资料:
  • 问题内容: 我有一个安装了ACR122驱动程序的ACR122U NFC读写器连接到Windows计算机。 我尝试使用API将SELECT(通过AID)ADPU发送到我的Android设备(应该处于HCE模式)。 这是我的代码: 这是我得到的输出: 我想这是我的Android设备提供给NFC阅读器的UID。SELECT APDU不返回任何响应,它的长度为0个字节。 在我的Android设备上,我有以

  • 我使用下面的示例代码来读取NFC标签,但它不是多次读取标签(有时读取3次,有时读取6-7次)。在我的应用程序中,我需要连续读取nfc标签。 https://github.com/andijakl/NfcDemo

  • 我有一个ACR122U NFC阅读器,正在用一个简单的文字“测试”向MIFARE Classic 1K标签的块1写入数据。 是否可以使用三星Galaxy S3读取Android系统的NFC标签?是不是有什么app可以做呢? 这是我的Windows应用程序读取标记时的日志输出:

  • 有人知道我如何预测android设备上的下一个id吗。因为每次我翻阅阅读器,我都会得到一个不同的id。

  • 在问题[1]中,我了解到如果您想在Android下使用NFC标签,则不必采用NDEF格式。我想在Win 8.1 in. Net下执行此操作。我的情况是这样的: 我有一个RFID卡Mifare Classic 1K,其中存储了一个ID。(由制造商记录)该ID由我们的考勤系统通过通常的RFID读取器(例如Gigatek的PROMAG MFR120)读取。我们不在卡上写任何东西,我们只需要读取ID。但是

  • 我在 Android 中面临日期解析的真正问题。我通过 JSON 接收一个日期,日期为 dd/MM/yyyy HH:mm z 格式,我所需要的只是获取“本地化”的小时和分钟并将其显示在我的应用程序中。使用我的代码,每台设备上一切正常,但我的客户报告说,他们在使用索尼XPERIA设备时无法看到应用程序中的时间。他们还告诉我,他们有一个无法显示时间的XPeria设备,然后他们扎根它,一切都开始正常工作