Android Beam - 只有一个Touch To Beam从两个设备传输有效负载?

时间:2013-03-24 18:24:34

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

好的,我在2011年presentation on NFC点对点观看了Google I / O.

演示在Gingerbread上完成并使用application Sticky Notes found

现在在这个演示中,两个设备同时调用onNewIntent(),因此两个设备都试图相互共享信息。

在ICS及以上版本中,你有Android Beam ..

使用Android Beam,你必须触摸才能触发将发送NDef消息的onNewIntent()事件。

现在问题是现在要在两个设备上触发onNewIntent(),每个设备上的用户必须同时“触摸到光束”。

有没有办法在一台设备上Touch To Beam时,两者都可以调用onNewIntent()?

我正在尝试开发一个可以互相交换数据的应用程序,但是为了让它以友好的方式工作,我需要设备在一台设备上启动Touch To Beam后同时共享数据。我希望这是可能的。

修改: It looks like这可能无法做到:(

4 个答案:

答案 0 :(得分:1)

据我所知,您想要的功能无法通过NFC本身获得。触摸到波束/ SNEP / NPP传输仅在Android上有一个方向。点击屏幕的用户会将NDEF消息推送到另一部手机。

我相信他们在视频中所做的是与NDEF消息建立蓝牙连接以进行传输(正如您在stickynotes演示中看到的那样)。不幸的是,没有很好的API。

然而,EasyNFC项目承诺能够允许您在两个电话/应用程序之间创建蓝牙连接和插座。查看here

我试过了,并不喜欢设置蓝牙连接时仍然需要的Touch-to-Beam UI。它也没有真正适合我的需求,因为我想将手机转移到电脑而不是真的想要实现NFC P2P和蓝牙连接。

答案 1 :(得分:0)

你试过这个:
使用手机1上的Touch to Beam来“ PUSH ”数据,而在另一个(手机-2)上,使用NDEF_DISCOVERED / TECH_DISCOVERED意图来触发/启动数据捕获/接收。我依稀记得当PUSH完成时触发了上述意图之一。虽然,每次传输都需要“触摸”来启动发光。

答案 2 :(得分:0)

一般情况下,Android不应同时允许双向NFC数据传输。让我们想一想我想用NFC向朋友发送东西的场景。在我朋友的电话上积极开放的东西并不重要。我应该发送这个东西,即使是相同的应用程序在接收器端没有打开。在我的朋友手机中可能还有另一个应用程序试图向我发送另一个东西。当我们触摸我们的手机时,会出现Android Beam(TM),并且他会从触摸的手机发送数据。

在你的情况下,我认为你应该通过设置setNdefPushMessage(null)禁用Android Beam(TM)并使用旧方式发送两种方式。

答案 3 :(得分:-1)

https://developer.android.com/preview/api-overview.html

我认为它将在L !!!中提供

NFC增强功能

您的应用可以通过调用android.nfc.NfcAdapter.invokeBeam()来调用用户设备上的Android Beam来共享数据。这样就无需用户手动将设备与另一台支持NFC的设备对齐,即可完成数据传输。