没有启用android梁,没有为Android nfc实现调用onNewIntent

时间:2014-02-25 11:36:29

标签: android nfc ndef nfc-p2p android-beam

我一直致力于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的电话。

任何方向都会有所帮助。

1 个答案:

答案 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数据交换。