2014-11-14 88 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