4

我希望我的 android 设备充当 NFC 标签。是否可以使用 NFC 设备作为 NFC 标签?我怎样才能做到这一点?我已经完成了设备之间的读/写标签,光束数据。

4

2 回答 2

7

根据您的 NFC 设备,这可能是可行的。但是,我不同意kamituel的说法,即这是由多个应用程序通过 Android Beam 完成的。

Android Beam 使用 NFC 的点对点模式(虽然它可能具有类似的效果)使用一台设备作为读取器(读取器/写入器模式)和一台设备作为标签不同。对等模式使用与读取器/写入器模式不同的协议栈进行通信。即 NDEF 位于 LLCP 之上的 SNEP 之上,用于点对点模式通信,NDEF 位于标签操作规范之一之上,用于读取器/写入器模式访问 NFC 标签。

所以只有数据表示层(NDEF)对于两个协议栈是相同的。在 NFC 环境中,NDEF(NFC 数据交换格式)抽象了实际的通信部分,并可能使应用程序独立于所使用的数据传输。Android 只是有点没能通过引入他们的 Beam UI 来使其可用。

如果要模拟标签的 NFC 设备是 Android 设备,则在模拟 NFC标签时有一些要求和限制:

  • 仿真设备需要运行 Android 4.4 或更高版本。
  • 仿真设备需要支持基于主机的卡仿真。许多配备 NXP PN544 NFC 控制器的设备并非如此
  • 您只能根据 NFC 论坛类型 4 标签操作规范模拟 NFC 标签。这是由于 Android HCE 中的一个限制,它只允许在 ISO/IEC 14443-4 之上模拟 ISO/IEC 7816-4 应用程序结构。

除了 HCE 功能,Android 设备还将向其他设备宣布其对等模式功能。因此,如果您想通过其他 Android 设备访问 Android HCE 模拟 NFC 标签,则该其他 Android 设备将看到点对点模式功能,并且不会自动处理来自模拟标签的 NDEF 消息。

为了克服这个限制,阅读 Android 设备还需要有 Android 4.4 或更高版本。从该平台版本开始,您可以使用阅读器模式 API禁用对等模式发现。只有当您这样做时,您才能从第二台 Android 设备访问模拟的 NFC 标签。

于 2014-08-07T05:56:48.203 回答
1

对的,这是可能的。这是由多个应用程序完成的。一个示例是浏览器应用程序,它将导致对等设备打开相同的页面。通过这样做,浏览器使对等设备的行为几乎与读取无源 NFC 标签时相同。

关键是将有效的 NDEF 记录发送到对等设备。例如,要使对等设备打开具有给定 URL 的浏览器,您可以使用以下记录:

  • TNF:众所周知(0x01,根据 [1])
  • 类型:'U' -(0x55,根据 [2])
  • 有效载荷:URL - 通常是 UTF-8 编码,可能有缩写(参见 [2] 的描述)
  • id: null (你可以在这里设置一些值,但这不是必需的)

您可以看到 NDEF 记录字段的值因您要提供的内容而异。众所周知的是 URI(如上所示)、文本记录、智能海报等。

请参阅NdefRecord类以供参考。

[1] NFC论坛-TS-NDEF_1.0

[2] NFC论坛-TS-RTD_URI_1.0

于 2014-08-06T10:27:28.793 回答