【问题标题】:onNewIntent is not being called for android nfc implementation without enabling android beam在不启用 android 光束的情况下,不会为 android nfc 实现调用 onNewIntent
【发布时间】:2014-02-25 11:36:29
【问题描述】:

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

对于发起者模式:

mAdapter.setNdefPushMessage(getTestNdefMessage(), this);

对于目标模式:

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

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

任何人都可以帮我解决我在概念上或实施上的错误。如果我从settings 启用Android NFC Beam,那么我会在Initiator 设备上收到Touch to Beam 的通知。在这种情况下,我接到了onNewIntent 的电话。

任何方向都会有所帮助。

【问题讨论】:

  • 启用 Beam 时会调用 onNewIntent 方法,对吗?那么问题出在哪里?
  • 这就是我的困惑。 p2p模式是否需要开启android beam才能使用nfc?
  • Android Beam Android 唯一的点对点模式界面。所以,是的,如果您想使用 Android 跨点对点模式传输任何内容,则必须使用 Beam。
  • 如果是这种情况,如果我有一部带有 NFC 的安卓手机,而另一部是带有 NFC 功能的非安卓手机,我该如何管理 p2p 通信?
  • 当我使用非安卓设备测试 nfc 实现时,设备作为 NFC 发起者,设备可以识别我的安卓手机的 nfc,但无法向我的安卓手机发送数据。我没有收到任何回电。

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


【解决方案1】:

Android Beam Android 唯一的点对点通信功能。因此,当您禁用 Android Beam 时,您的设备将无法通过点对点模式发送或接收消息。因此,如果禁用 Beam,将两部手机放在一起时,onNewIntent (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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多