我一直致力于Peer-To-Peer
模式的nfc样本。我已经以两种不同的方式实现了onResume
方法,对于启动器模式和目标模式,如下所示:
对于启动器模式:
mAdapter.setNdefPushMessage(getTestNdefMessage(), this);
和目标模式:
mAdapter.enableForgroundDispatch(this, pendingIntent, null, null);
我制作了一个Android手机作为发起人,另一个作为目标并将它们背靠背。在这里,我可以收听NFC设备检测声音但在Android手机设置为目标模式时没有接到onNewIntent
的任何呼叫。
在概念或实施方面,任何人都可以帮助我。如果我从Android NFC Beam
启用settings
,则会在Initiator
设备上收到Touch to Beam
的通知。在这种情况下,我接到onNewIntent
的电话。
任何方向都会有所帮助。
答案 0 :(得分:1)
Android Beam 是 Android唯一的点对点通信功能。因此,当您禁用Android Beam时,您的设备将无法通过点对点模式发送或接收消息。因此,如果禁用Beam,则在将两部手机放在一起时onNewIntent
(等)不会触发。
Android Beam是在NFC论坛的标准点对点模式协议栈之上实现的:
+--------------------------------------------+
| Android Beam |
+--------------------------------------------+
| NDEF (NFC Data Exchange Format) |
+--------------------------------------------+
| SNEP (Simple NDEF Exchange Protocol) |
| (or NDEF Push Protocol (NPP) for backwards |
| compatibility to pre-SNEP Android devices) |
+--------------------------------------------+
| LLCP (Logical Link Control Protocol) |
+--------------------------------------------+
| NFCIP-1 (ISO/IEC 18092) |
+--------------------------------------------+
(您使用的术语“发起人”和“目标”仅与NFCIP-1层相关。通常两个部分都将在NFC设备上实现,两个NFC设备(有些自动地)会同意谁采取发起人角色和谁担任目标角色。)
因此,您通常会将所有层实现到SNEP,以便与具有Beam的Android设备进行通信。 Windows Phone 8和Blackberry已经实施了SNEP以进行点对点NDEF数据交换。