使用NFC设备作为NFC标签

时间:2014-08-06 10:20:12

标签: android nfc hce

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

2 个答案:

答案 0 :(得分:5)

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

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

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

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

  • 仿真设备需要运行Android 4.4或更高版本。
  • 仿真设备需要支持基于主机的卡仿真。对于使用恩智浦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或更高版本。从该平台版本开始,您可以使用reader mode API禁用对等模式发现。只有当您这样做时,您才能从第二个Android设备访问模拟的NFC标签。

答案 1 :(得分:1)

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

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

  • TNF:众所周知(0x01,根据[1])
  • 类型:' U' - (0x55,根据[2])
  • payload:URL - 通常采用UTF-8编码,可能有缩写(参见[2]的描述)
  • id:null(你可能在这里放一些值,但没有必要)

您可以看到NDEF记录字段的值会根据您要提供的内容而有所不同。众所周知的是URI(如上所示),文本记录,智能海报等。

请参阅NdefRecord课程以供参考。

[1] NFCForum-TS-NDEF_1.0

[2] NFCForum-TS-RTD_URI_1.0