我可以使用 Android HCE 从设备 运行 Android 4.3(或更低版本)访问设备吗?

Can I access a device using Android HCE from a device running Android 4.3 (or below)?

我开发了一个使用 Android HCE 模拟非接触式智能卡的应用程序和一个访问(读取)该模拟卡的应用程序。 运行 Android 4.4 (KitKat) 及更高版本。

不,我想为 运行 Android 4.3(或更低版本)的设备开发 reader 端。是否可以从 API 级别 < 19 的设备访问使用 Android HCE 的设备?我不想使用 Android 光束功能。

不,那不可能。默认情况下,两个 Android 设备(放在一起时)将以 点对点模式 进行通信。即使一个或两个设备都支持主机卡仿真,情况也是如此。一旦 Android 设备成功建立了点对点模式 link,它 将不会尝试在同一目标上使用 reader/writer 模式 .

为了允许 Android HCE 模拟卡对第二个 Android 设备可见(从中访问),第二个设备必须 禁用 它的点对点模式功能,只能在 reader/writer 模式下运行。

这正是您使用 Android reader 模式 API 所做的(您似乎在 reader 应用程序中使用 Android 4.4 ).使用带有标志 FLAG_READER_NFC_AFLAG_READER_NFC_BNfcAdapter.enableReaderMode() 强制 Android 在 reader/writer 模式下运行并 禁用 peer-点对点模式。

由于此 API(或类似的东西)在 Android 4.3 及以下版本(即 API 级别 19 之前)不可用,您无法以编程方式1 禁用点对点模式。因此,您在 Android 4.3 上的 reader 应用无法与 Android HCE 模拟卡通信。



1) 请注意,在设置中禁用 Android Beam 也不会 禁用对等模式。这只会禁用通常 运行 在对等模式之上的 Beam 功能。