2017-01-23 147 views
0

我想使用NFC在两个android应用程序之间实现p2p。Android nfc发送消息来往HCE?

我已经尝试过装载机(https://github.com/googlesamples/android-CardEmulation)和读卡器(https://github.com/googlesamples/android-CardReader)Apps。他们工作正常。

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

是否可以在apdu命令中发送额外的数据? 数据字段现在包含援助,如果我改变这个或在援助之后放置额外的数据,我的应用程序将关闭课程更改援助,因此它不会连接。

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

还是不可能这样做?

+0

你在同样的方式解决了吗? – firegloves

+0

你是什么意思??我没有解决它。现在我只能向一个方向发送(通过读取模拟卡)。 – Han

+0

我会知道你已经尝试过并发现了一个带有apdu命令的解决方案,如果是的话请让我知道 – firegloves

回答

0

NFC Peer 2 Peer模式与NFC Card Reader模式不同。

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

从这里开始阅读约LLCP and SNEP protocols

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

要通过Android Beam发送NDEFMessage您需要实现这两个接口:

CreateNdefMessageCallback 
OnNdefPushCompleteCallback 

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

进入onNdefPushComplete()方法你可以在NDEFMessage上做些什么来完成发送。

你需要的是识别哪个设备将作为启动器,然后到createNdefMessage()你应该返回一个NDEFMessage发送到其他设备。

在接收设备上(在名为目标设备的NFC中),您应该将NDEFMessage接收到Activity.onNewIntent(Intent intent)中并对其进行管理。

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

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

的记录请记住,要能够接收NDEFMessage,您必须在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

希望帮助

+0

我知道,但我不想使用Android束。所以有可能与阅读器进行交互,而不用按下屏幕。这就是为什么我看Android阅读器和HCE。 – Han