0

我一直在研究Peer-To-Peermode 的 nfc 样本。我onResume以两种不同的方式实现了方法,用于启动器模式和目标模式,如下所示:

对于发起者模式:

mAdapter.setNdefPushMessage(getTestNdefMessage(), this);

对于目标模式:

mAdapter.enableForgroundDispatch(this, pendingIntent, null, null);

我将一部安卓手机作为发起者,另一部作为目标,并将它们背靠背放置。onNewIntent 在这里,我可以听到 NFC 设备检测声音,但在设置为目标模式的 android 手机上没有收到任何呼叫。

任何人都可以在我错的地方帮助我,在概念上还是在实施上。如果我启用Android NFC Beam,我会在设备settings上收到通知。在这种情况下,我接到一个电话。InitiatorTouch to BeamonNewIntent

任何方向都会有所帮助。

4

1 回答 1

1

Android BeamAndroid 唯一的点对点通信功能。因此,当您禁用 Android Beam 时,您的设备将无法通过点对点模式发送或接收消息。因此,onNewIntent如果禁用 Beam,将两部手机放在一起时 (et al) 不会触发。

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 已经为点对点 NDEF 数据交换实现了 SNEP。

于 2014-04-15T12:46:58.087 回答