Android 支持离线主机卡模拟,这意味着使用安全元件进行 NFC 卡模拟。如需了解详情,请参阅基于主机的卡模拟概览。
在某些用例中,例如使用 FeliCa 进行交通运输,当设备的屏幕锁定或关闭,或者设备关闭时,允许进行离线主机卡模拟。
安全 NFC 是 Android 10 中引入的一项功能,允许仅在设备屏幕解锁时启用离线主机 NFC 卡模拟。实现此功能让用户可以选择启用安全 NFC 以提高安全性。
实现
要实现安全 NFC 功能,设备必须具有支持 NCI 2.0 标准的 NFC 控制器,并且必须使用 Android 开源项目 (AOSP) NFC 框架。将支持安全 NFC 功能的硬件 (ro.boot.hardware.sku
) 添加到 NFC 资源 XML 文件,并使用 config_skuSupportsSecureNfc
属性。
框架 API
要实现安全 NFC,请实现 Android 开源项目中提供的以下框架 API
isSecureNfcSupported()
:检查设备是否支持安全 NFC 功能。isSecureNfcEnabled()
:检查是否启用了安全 NFC 功能。enableSecureNfc(boolean enable)
:启用安全 NFC 功能。
设置界面
在“设置”应用中,添加一个切换开关,让用户可以启用和停用安全 NFC 功能。您可以自定义“设置”应用中的默认设置,使其为启用或停用状态。
图 1 显示了在“设置”应用中启用和停用安全 NFC 的切换开关示例,位于设置 > 已连接的设备 > 连接偏好设置 > NFC > NFC 需要设备解锁。
图 1. 启用和停用安全 NFC 的切换开关示例
当启用安全 NFC 且用户将设备放在 NFC 阅读器上时,Android 会在锁定屏幕上显示解锁以使用 NFC 通知,如图 2 所示。
图 2. 锁定屏幕上显示的“解锁以使用 NFC”通知
验证
要验证您的实现,请启用安全 NFC 功能,并确认当设备的屏幕关闭或锁定时以及设备关闭时,NFC 卡模拟功能已停用。