3

我已经构建了一个应用程序,可以从我们学校使用的学生证中读取某些数据。目前它只读取用户数据,但未来计划是增加对读取剩余信用的支持。

问题是我们使用的卡是 Mifare Classic。Nexus 4 和 Nexus 10(可能还有更多设备)不支持这些卡,因为它们具有 Broadcom NFC 控制器。如果我是对的,该应用程序不应该在这些设备上崩溃或出现问题,但它什么也不做。

有没有办法在没有 NXP 控制器的情况下以某种方式排除这些设备?(基本上就像 MifareClassic 类所需的使用功能。)我可以通过 Play 商店排除 Nexus 4 和 10,但这并不是一个好的解决方案 - 更重要的是因为其他设备可能开始使用 Broadcom 控制器并且它们都必须是手动排除。

谢谢!- 安布鲁斯

4

2 回答 2

4

您可以按如下方式签入您的应用以获得 MIFARE Classic 支持:

boolean hasMifare(Context ctx) {
 return ctx.getPackageManager().hasSystemFeature("com.nxp.mifare");
}

在安装应用程序之前无法检查这一点。但安装后,您可以警告用户您的应用程序的功能将受到限制,因为缺少 MIFARE Classic 支持。

于 2013-04-05T11:48:52.127 回答
0

显然,这些手机仍然可以读取 UID。

NFC Mifare Classic 标签可以与 Nexus 4 和 10 一起使用吗?

是的!和不。虽然 Nexus 4 或 10 无法写入或完全读取 Mifare Classic 芯片,但可以检测和读取其 UID(唯一识别码)。因此,Mifare Classic Chips 可与 Nexus 4 或 10 以及 AutomateIt 等应用程序一起使用,该应用程序仅使用标签的 UID 来触发保存在设备上的事件/设置。(ReTag 和 NFC 任务启动器也可以只使用标签的 UID,但也可以写入可写标签。)不利的一面是,如果您有多个这些类型,则无法写入标签在手机上的 NFC 应用程序中,点击标签会弹出一个框,询问您要使用什么应用程序。但是,如果您只对所有标签事件/设置/等使用一个 NFC 应用程序,

在http://andytags.com/nfc-tags-nexus-4--10-compatibility.html#47A4kbkkGceGqe3L.99了解更多信息

我建议您尝试使用渐进式 Web 增强编程中使用的相同原则,并使用包含在 try/catch 块中的保护条件来防止每个小功能/假设,而不是仅基于名称/品牌进行过滤。

这样,如果某些制造商创建了错误的标签,或者如果用户错误地尝试同时扫描两个标签,或者如果用户在扫描完成之前太快移除手机,或者将来发生任何其他情况,您的应用程序将能够更轻松地处理这些类型的错误情况。

于 2013-04-02T23:16:01.373 回答