簡體   English   中英

帶有HCE Android的NDEF消息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM