是否可以使Android HCE向后兼容(对于低于4.4/KitKat的版本)?

是否可以使Android HCE向后兼容(对于低于4.4/KitKat的版本)?,android,nfc,android-4.4-kitkat,hce,Android,Nfc,Android 4.4 Kitkat,Hce,我知道HCE功能仅在KitKat中引入,但由于整个概念仅在软件级别上引入,难道不可能深入研究AOSP代码并提取与HCE相关的更改,并将其创建为某种库,以便每个支持NFC但低于4.4的Android手机都有可能与HCE兼容吗?我认为这并不容易。在Android上,与NFC非接触式前端的所有交互都由NFC系统服务(与NFC接口库(libnfc nxp或libnfc nci)交互)处理。整个NFC堆栈如下所示: +--------------------------------------------

我知道HCE功能仅在KitKat中引入,但由于整个概念仅在软件级别上引入,难道不可能深入研究AOSP代码并提取与HCE相关的更改,并将其创建为某种库,以便每个支持NFC但低于4.4的Android手机都有可能与HCE兼容吗?

我认为这并不容易。在Android上,与NFC非接触式前端的所有交互都由NFC系统服务(与NFC接口库(libnfc nxp或libnfc nci)交互)处理。整个NFC堆栈如下所示:

+----------------------------------------------------------------+
| App using NFC functionality (reader/writer, peer-to-peer, HCE) |
+----------------------------------------------------------------+
                               |
                               |
+----------------------------------------------------------------+
|               Android NFC API (Framework/Java)                 |
+----------------------------------------------------------------+
|         NFC system service (Java + native components)          |
+----------------------------------------------------------------+
|        NFC interface library (libnfc-n__, native code)         |
+----------------------------------------------------------------+
|                NFC interface driver (Kernel)                   |
+----------------------------------------------------------------+
                               |
                               |
+----------------------------------------------------------------+
|         NFC contactless frontend chip (Broadcom, NXP)          |
+----------------------------------------------------------------+
为了添加HCE,需要更改NFC接口库(?)、NFC系统服务和Android NFC API的部分内容。虽然可以将相关代码从API层集成到应用程序,并直接连接到NFC系统服务,但不能更改NFC系统服务(和libnfc-n__)无需修改Android操作系统本身


但是,您可以尝试根设备并修改所有这些组件。(相关组件都在用户空间中,因此这应该不是问题。)但是,您也可以直接在该设备上安装Android 4.4+。

我认为这并不容易。在Android上,与NFC非接触式前端的所有交互都由NFC系统服务处理(与NFC接口库(libnfc nxp或libnfc nci)交互)。整个NFC堆栈如下所示:

+----------------------------------------------------------------+
| App using NFC functionality (reader/writer, peer-to-peer, HCE) |
+----------------------------------------------------------------+
                               |
                               |
+----------------------------------------------------------------+
|               Android NFC API (Framework/Java)                 |
+----------------------------------------------------------------+
|         NFC system service (Java + native components)          |
+----------------------------------------------------------------+
|        NFC interface library (libnfc-n__, native code)         |
+----------------------------------------------------------------+
|                NFC interface driver (Kernel)                   |
+----------------------------------------------------------------+
                               |
                               |
+----------------------------------------------------------------+
|         NFC contactless frontend chip (Broadcom, NXP)          |
+----------------------------------------------------------------+
为了添加HCE,需要更改NFC接口库(?)、NFC系统服务和Android NFC API的部分内容。虽然可以将相关代码从API层集成到应用程序,并直接连接到NFC系统服务,但不能更改NFC系统服务(和libnfc-n__)无需修改Android操作系统本身


但是,您可以尝试根设备并修改所有这些组件。(相关组件都在用户空间中,因此这应该不是问题。)但是,您也可以直接在该设备上安装Android 4.4+。

对于当前运行的KitKat,“NFC控制器”(图中的框3?)仍然不支持HCE。这是一个可以通过自定义ROM解决的问题,还是永久性地卡住?即使对于那些设备,NFC控制器(框“NFC非接触式前端芯片”)也是如此确实支持某种形式的HCE。它只是不支持Android的HCE实现所使用的机制。例如,CyanogenMod 9.1中的HCE实现特别需要一个PN544,因此可以在Nexus 7(2012)上使用。甚至基于PN544构建Android的HCE也是可能的(要么通过更改PN544固件(只有芯片制造商才能提供此类更新),要么通过调整Android的HCE机制以适应PN544。对于当前运行的KitKat,“NFC控制器”(图中方框3?)仍然不支持HCE。这是一个可以通过自定义ROM解决的问题,还是永久性地卡住?即使对于那些设备,NFC控制器(框“NFC非接触式前端芯片”)也是如此确实支持某种形式的HCE。它只是不支持Android的HCE实现所使用的机制。例如,CyanogenMod 9.1中的HCE实现特别需要一个PN544,因此可以在Nexus 7(2012)上使用。甚至基于PN544构建Android的HCE也是可能的(要么改变PN544固件——只有芯片制造商才能提供这样的更新——要么调整Android的HCE机制以适应PN544。