![](/img/trans.png)
[英]Android HCE with NDEF format and use iOS CoreNFC reader app to read it
[英]NDEF Message with HCE Android
我想用Android模仿具有HCE功能的主機卡。 為此,我擴展了服務類HostApduService並覆蓋了以下方法:
public byte[] processCommandApdu(byte[] commandApdu, Bundle extras) {
if (Arrays.equals(SELECT_APDU, commandApdu)) {
NdefMessage message = new NdefMessage(new NdefRecord [] {NdefRecord.createTextRecord("en", "test"});
return message.toByteArray();
} else {
return UNKNOWN_CMD_SW;
}
}
使用第二台設備,可以從HCE服務接收數據。 問題是我總是收到“ Type A”標簽,但是我需要NDEF消息。
有誰能夠幫助我?
對於那些堅持此問題的人,我已閱讀@Michael Roland提出的NFCForum -TS-Type-4-Tag 。 整個想法是正確的。 您所需要做的就是模擬SEND和RECEIVED過程,以將字節數組轉換為NDEF消息。 我創建了兩個存儲庫,一個存儲庫總結了有關將字符串轉換為NDEF消息的整個程序包,另一個存儲庫是一個iOS閱讀器NDEF TAG,用於驗證Android HCE是否正確。
祝你好運!
使用Android HCE模擬檢測為NDEF標簽的標簽並不像發送NDEF消息以響應SELECT APDU那樣簡單。 您將需要實施NFC論壇4類標簽操作規范。 您可以從NFC論壇網站獲得該規范。
基本上,您需要為AID D2760000850101
注冊HCE服務,該服務實現了一些APDU命令,讀者方可以使用這些命令來訪問Type 4標簽:
SELECT NDEF標簽應用
00 A4 04 00 07 D2760000850101 [00]
SELECT功能容器
00 A4 00 0C 02 E103
SELECT NDEF數據文件
00 A4 00 0C 02 xxyy
其中xxyy
是功能容器中指定的NDEF數據文件的文件ID。
READ BINARY(用於從功能容器或NDEF數據文件中讀取數據,無論當前選擇哪個)
00 B0 xx yy zz
其中xx yy
是要讀取的偏移量,而zz
是要讀取的字節數。
重要說明:請注意,由Android設備模擬的NFC論壇Type 4標簽不能用於自動觸發第二個Android設備上的應用程序(至少不能可靠地觸發?)。 將兩個Android設備放在一起通常會導致它們建立對等鏈接(即使關閉了Beam!)。 第二台Android設備上的僅前台應用程序可以使用NFC閱讀器模式API繞過Android Beam,並可靠地檢測到模擬標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.