安卓设备和其他NFC设备之间是否可以使用Android Beam?

10

我希望在我的Android应用程序和启用NFC的亭子之间实现NFC通信。我已经阅读了文档,并且了解可以通过以下两种方式之一来推送数据:

  • 针对API级别10到13的前台NDEF推送
  • 从API级别14开始使用Android Beam

我认为我可以通过第一种解决方案做到我想要的事情,但我想知道是否可以在Android设备和非Android设备之间使用Android Beam?

谢谢您的帮助,

Romain

3个回答

11

虽然 API 10 到 13 和 API 14 之间的函数调用有所不同,但实际底层协议几乎相同。在这两种情况下,NFC 点对点通信都使用 LLCP。在 API 10 到 13 中,使用的实际数据传输协议是 NPP。在 API 14 中,添加了 SNEP,但当其他设备不支持 SNEP 时,它会回退到 NPP。

因此,当您的非 Android 设备通过 LLCP 实现 SNEP 和/或 NPP 时,它可以与 Android NFC 设备进行数据传输和接收。存在多个面向读卡器设备的 SNEP 和 LLCP 实现,例如请参见https://github.com/grundid/nfctools


4

我为一份大学项目研究了这个问题。

首先请注意,NFC有三种操作模式{卡读/写、标签仿真和P2P通信}。Android支持卡读/写和P2P通信。

通过P2P与非Android设备通信相当复杂,因为你必须使用建立在LLCP(逻辑链路控制协议)上的NPP(Ndef推送协议)。你的非Android平台需要实现LLCP以使通信变得可能。我不确定NFC是否已经完成了这项工作。可以在此处找到关于NPP /LLCP实现的信息here

下一个方法是使用读/写模式与运行在卡仿真模式下的非Android设备进行通信。通过这种方式,你可以向仿真标签发送APDU以发送和接收数据。我在我的项目中使用BlackBerry反向采取了这种方法。BlackBerry支持卡仿真,因此我使用了非Android设备(ACR122U)向BlackBerry发送APDU。

虽然第一种方法(P2P)显然是理想的方法,但第二种方法可能更容易实现。无论如何,对我来说它在我的应用程序中运作得非常好,我创建了一个通过NFC接受支付的系统。

请注意,ACR122U不支持NFC标签仿真,因此不适合你。可以在LibNFC网站上找到支持标签仿真的设备。

我现在已经完成了这个项目,使用ACR122U设备效果很好。如果需要第二种方法的任何帮助,请提问。


@conor 根据您的说法,我可以创建Android设备与Blackberry设备之间的通信,唯一需要的是两者都支持NFC技术。 - Herry

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接