我可以使用 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_A
和 FLAG_READER_NFC_B
的 NfcAdapter.enableReaderMode()
强制 Android 在 reader/writer 模式下运行并 禁用 peer-点对点模式。
由于此 API(或类似的东西)在 Android 4.3 及以下版本(即 API 级别 19 之前)不可用,您无法以编程方式1 禁用点对点模式。因此,您在 Android 4.3 上的 reader 应用无法与 Android HCE 模拟卡通信。
1) 请注意,在设置中禁用 Android Beam 也不会 禁用对等模式。这只会禁用通常 运行 在对等模式之上的 Beam 功能。
我开发了一个使用 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_A
和 FLAG_READER_NFC_B
的 NfcAdapter.enableReaderMode()
强制 Android 在 reader/writer 模式下运行并 禁用 peer-点对点模式。
由于此 API(或类似的东西)在 Android 4.3 及以下版本(即 API 级别 19 之前)不可用,您无法以编程方式1 禁用点对点模式。因此,您在 Android 4.3 上的 reader 应用无法与 Android HCE 模拟卡通信。
1) 请注意,在设置中禁用 Android Beam 也不会 禁用对等模式。这只会禁用通常 运行 在对等模式之上的 Beam 功能。