Android nfc向HCE发送消息和从HCE发送消息?

时间:2017-01-23 21:22:17

标签: android nfc nfc-p2p android-beam

我想使用NFC在两个Android应用程序之间实现p2p。

我尝试了cardemulator(https://github.com/googlesamples/android-CardEmulation)和读卡器(https://github.com/googlesamples/android-CardReader)应用。他们工作得很好。

但是在这个例子中,它只将数据从cardemulator发送到读卡器。 我也想做另一种方式。

是否可以在apdu命令中发送额外数据? 数据字段现在包含帮助,如果我更改此项或在辅助后添加额外数据,我的应用程序将偏离当然更改辅助,因此它将无法连接。

我应该用我的数据发送额外的apdu命令吗?

还是不可能这样做?

1 个答案:

答案 0 :(得分:0)

NFC Peer 2 Peer模式与NFC读卡器模式不同。

如果您想在两个Android应用程序之间发送数据,则需要Android Beam才能在对等2对等模式下运行。

从这里开始阅读一些关于LLCP and SNEP protocols的内容。

您基本上需要的是使用Android回调方法将NDEFMessage从一台设备发送到另一台设备。

要使用Android Beam发送NDEFMessage,您需要实现这两个接口:

CreateNdefMessageCallback
OnNdefPushCompleteCallback

进入createNdefMessage()方法,您必须创建并返回NDEFMessage发送(here,您可以找到说明)。

使用onNdefPushComplete()方法,您可以在NDEFMessage发送完成后执行操作。

您需要确定哪个设备将充当启动器,然后进入createNdefMessage()您应该返回NDEFMessage以发送到其他设备。

在接收设备上(在名为Target设备的NFC中),您应该NDEFMessage收到Activity.onNewIntent(Intent intent)并管理它。

之后你可以在另一边做同样的事情。

理论上使用SNEP协议,您应该能够发送SNEP GET请求,但在Android上,此功能已被禁用。在这里,您可以阅读有关Android SNEP implementation

的讨论

请记住,为了能够接收NDEFMessage,您必须在youm manifest.xml中定义一个IntentFilter,指定您的活动必须“拦截”哪个NDEFMessage。这是捕获AndroidApplicationRecord NDEFMessage的示例:

<intent-filter>
  <action android:name="android.nfc.action.NDEF_DISCOVERED" />
  <category android:name="android.intent.category.DEFAULT" />
  <data android:mimeType="application/com.example.android.beam" />
</intent-filter>

选中此Android Beam Example

希望有所帮助