2017-01-23 146 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