Android 虚拟设备 (AVD) 的 NFC 标签模拟

NFC tag emulation for Android virtual device (AVD)

有没有什么方法可以在不启用 NFC phone 的情况下开发 NFC 标签 reading/writing 应用程序?有没有办法创建启用了 NFC 的 AVD?我已经搜索并发现 Open NFC 存在,但我现在找不到太多关于它的信息。它已经过时了吗?还有其他方法可以实现吗?

Google 从未在 AVD 中实现对 NFC 的支持。因此 Android 设备模拟器中没有对 NFC 的官方支持。

早在 Android 上的 NFC 早期,Inside Secure 开发并发布了 NFC 堆栈 "Open NFC"。尽管名称如此,但 Open NFC 并不像其名称所暗示的那样开放,主要针对 Inside 的 NFC 前端系列。 NFC 堆栈的一个很好的 side-effect 是它的模拟器集成,类似于诺基亚的 NFC 虚拟设备支持其 S40 系列手机的功能。 Open NFC 项目的 public 文件在 SourceForge 上仍然可用:here. However, the project has long been abandoned (probably due to selling their NFC technology to Intel).

Open NFC 的最新版本针对 Android 4.2.1(与 Android 4.2.2 一起使用),因此如果您可以接受该平台,您可以尝试设置该 AVD 环境. step-by-step 指南可在此处获得:Open NFC Simulator Usage (also see here for missing components: Failed to load open-nfc addon in android platform).

较新的 Android 版本上的 NFC 堆栈发生了显着变化(现在,整个 Android NFC 堆栈基于 libnfc-nci,它最初针对 Broadcom 的 NFC 控制器并实现了 NFC 论坛的 NFC控制器接口规范)。因此,Open NFC 的实现不再与更新的 Android 版本兼容。

请注意,仍有一些方法可以通过注入 NFC 意图通过代码进行至少一些有限的测试(例如对单元测试有用)。参见

  • How to simulate the tag touch from other application
  • Is there a way to create an ACTION_NDEF_DISCOVERED intent from code
  • Testing an app by faking NFC tag scan

但请注意,这些方法依赖于 Android NFC 堆栈的内部结构,您可能需要检查您要模拟正确信息的任何 Android 版本的代码。