gpt4 book ai didi

android - 使用 libnfc 在智能手机中对 nfc 进行低级访问

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:56 25 4
gpt4 key购买 nike

我想在智能手机上使用 libnfc(我可以使用 Android 或 Windows 手机)。我需要对 NFC 设备进行低级别访问,因为标准 API 不允许我执行我需要的所有操作。

这可能吗?有没有办法处理 libnfc 以外的东西?有人可以帮助我吗?

最佳答案

Windows 手机

在 Windows Phone 上,我认为绕过 Windows API 并使用您自己的软件堆栈直接访问 NFC Controller 的驱动程序层并不容易。

安卓

在 Android 上,这取决于您在谈论什么 libnfc 以及您想要深入了解设备的 Android 系统。

This libnfc仅支持 NXP 的 PN532 NFC Controller ,因此不适用于当前集成到 Android 设备中的 NFC Controller (NXP 的 PN544/PN547、Broadcom 的 BCM2079x)。但是,如果您谈论的是 libnfc-nxp (对于 NXP 的 PN54x)或 libnfc-nci (对于 Broadcom 的 BCM2079x 和可能的其他 NCI 兼容芯片)这是另一回事。您或许能够使用它们或根据您的需要调整它们。

所以现在的问题是如何绕过标准的 Android API 并直接使用现有的 NFC 堆栈(libnfc-nci/nxp 或 Android NFC 服务)。

我建议您首先研究现有 Android NFC 服务提供的功能,而不是通过 Android API 提供的功能。如果该功能已经足够,您可以尝试直接与 NFC 服务交互并简单地使用该功能。

如果您需要更多功能,它会变得复杂:NFC Controller 通过内核驱动程序集成到 Android 系统中,并且可以作为 Linux 设备文件访问(在 /dev/ 下)。 Android NFC 服务使用 libnfc-nxp/nci 来访问该设备文件。因此在正常情况下,设备文件已被 Android NFC 服务使用,因此其他 libnfc-* 实例无法访问/无法使用。此外,只有 NFC 服务(或者更确切地说,它的 Linux 用户)可以访问设备文件。

所以有两种选择:

  1. 您可以修改整个 Android 系统(即创建自定义的 Android 系统固件)。在这种情况下,最简单的选择是使用现有的 libnfc-* 和 Android NFC 服务源代码,并使用您的功能对其进行扩展。您甚至可以根据需要调整自定义固件的 Android API。

  2. 您想更改实时系统(即您不想将自定义固件刷写到设备上)。在这种情况下,您需要将现有的 Android NFC 服务替换为您自己的包含所需扩展功能的 NFC 服务。您肯定需要根访问权限才能实现其中任何一个(因为您将不得不强制关闭现有的 NFC 服务,并且您的替代 NFC 服务将需要访问 NFC Controller 的设备文件)。

关于android - 使用 libnfc 在智能手机中对 nfc 进行低级访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22781690/

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