我想在我的Android应用和支持NFC的自助服务终端之间实现NFC通信。我已经阅读了documentation,我理解推送数据可以通过两种方式完成:
我想我可以通过第一个解决方案做我想做的事情,但我想知道是否可以在Android设备和非Android设备之间使用Android Beam?
感谢您的帮助,
罗曼
答案 0 :(得分:11)
虽然API 10到13和APi 14之间的函数调用不同,但实际的底层协议几乎相同。在这两种情况下,NFC对等通信都是使用LLCP完成的。在API 10至13中,使用的实际数据传输协议是NPP。在API 14中,SNEP被添加到其中,但当其他设备不支持SNEP时,它将回退到NPP。
因此,当您的非Android设备通过LLCP实施SNEP和/或NPP时,它可以将数据传输到Android NFC设备并从Android NFC设备接收数据。存在用于读卡器设备的SNEP和LLCP的若干实现,例如参见https://github.com/grundid/nfctools。
答案 1 :(得分:4)
我参观了这个大学项目。
首先请注意,NFC操作有3种模式{卡读/写,标签模拟和P2P通信}。 Android支持卡读/写和P2P通信。
通过P2P与非Android设备通信非常复杂,因为您必须使用基于LLCP(逻辑链路控制协议)的NPP(Ndef推送协议)。您的非Android平台将需要实现LLCP才能进行通信。我不确定这是否已经为NFC做了。有关NPP / LLCP实施的信息可以在here
找到下一种方法是使用卡读/写模式与在卡仿真模式下运行的非Android设备进行通信。这样,您可以将APDU发送到模拟标签以发送和接收数据。我使用BlackBerry为我的项目反向做了这种方法。 BlackBerry支持卡仿真,因此我使用非Android设备(ACR122U)将APDU发送到BlackBerry。
虽然第一种方法(P2P)显然是理想的方式,但第二种方法可能更容易实现。无论如何,它在我的应用程序中对我很有效,我创建了一个通过NFC接受付款的系统。
请注意,ACR122U不支持NFC标签仿真,因此不适合您。 LibNFC网站是一个很好的开始,可以找到支持标记模拟的设备。
我现在完成了项目,使用ACR122U设备效果很好。如果您在第二种方法上需要任何帮助,请询问。
答案 2 :(得分:0)
见下文 问题28014:启用真正的NFC p2p通信和禁用“触摸到光束”UI的选项 https://code.google.com/p/android/issues/detail?id=28014 Android Peer to Peer根本不起作用。