2014-11-14 64 views
0

我有2個問題:卡仿真,RC522和Nexus 4的NFC UID

首先,我想仿真卡和NDEF消息。

public class MyHostApduService extends HostApduService { 
private int messageCount = 0; 
    @Override 
    public byte[] processCommandApdu(byte[] apdu, Bundle extras) { 
     String n1="Hello World"; 
     byte[] response=n1.getBytes(); 
     Log.d("HCEDEMO", "Application selected"); 
     return response; 
    } 

    @Override 
    public void onDeactivated(int reason) { 
     Log.d("HCEDEMO", "Deactivated: " + reason); 
    } 
} 

當我的手機模擬一個標籤,把它靠近NFC閱讀器RC522: 我用這個代碼實現HostApduService。 但是這些代碼沒有運行。 AID有問題嗎? 我用艾滋病:

  • F04E66E75C02D8
  • F0394148148100
  • D2760000850101
  • F222222222

第二,我想知道什麼是Android設備的NFC的UID當它與其他設備進行通信。沒有找到與谷歌:(

你能幫我嗎?

回答

0

您使用的是看行不行艾滋病(應該是足夠的,雖然)。如果你的HCE服務不會被觸發,你可能不發出SELECT(by AID)命令在另一端,所以不知道你在通信的讀者端做了什麼,幾乎不可能在那裏診斷出什麼問題。如果你想通過HCE正確傳輸NDEF消息,你需要在你的HCE服務中實現NFC論壇的Type 4標籤操作規範,而且你應該避免使用任意的條款gs在你的processCommandApdu()方法中。相反,您應該實施基於ISO/IEC 7816-4 APDU的協議。

關於第二個問題,Nexus 4(與大多數其他支持HCE的設備一樣)通常會使用隨機生成的防衝突標識符(UID)。在大多數設備上,這個隨機ID是爲閱讀器設備的磁場的每次激活(或者每當手機進入閱讀器設備的範圍內)而產生的。只要屏幕打開,某些設備也會生成新的ID。

+0

1.所以問題出在讀者端? Reader是不是調用Android設備的SELECT命令?但是,它可以讀取其他NFC標籤。 如果我想傳輸NDEF消息,我必須在HostAPDUService中實現? 2.我有一個SS注意,它生成了一個固定的ID。我能得到它嗎? – 2014-11-17 10:33:36

+0

@TrươngVănTrọng是的,讀者需要用卡片說ISO-DEP,並且需要爲註冊HCE服務的AID發出SELECT命令。能夠閱讀其他NFC標籤並不一定使讀者有資格與HCE應用程序交談。 – 2014-11-17 11:52:07