卡仿真,RC522和Nexus 4的NFC UID

时间:2014-11-14 13:52:52

标签: android nfc apdu hce

我有两个问题:

首先,我想要仿真卡和NDEF消息。 我使用以下代码实现了HostApduService

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 Reader RC522附近。 但是这些代码没有运行。 AID有问题吗? 我使用了AID:

  • F04E66E75C02D8
  • F0394148148100
  • D2760000850101
  • F222222222

其次,我想知道Android设备与其他设备通信时的UID是什么。谷歌找不到任何东西:(

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你正在使用的AID看起来还不错(但是应该足够了)。如果未触发HCE服务,则可能不会在另一端发出SELECT(通过AID)命令。因此,如果不知道你在通信的读者方面做了什么,那么很难诊断出那里出了什么问题。

请注意,您的上述代码与NDEF消息无关。如果您想通过HCE正确传输NDEF消息,则需要在HCE服务中实施NFC论坛的Type 4标签操作规范。此外,您应该避免使用processCommandApdu()方法中的任意字符串进行响应。相反,您应该实施基于ISO / IEC 7816-4 APDU的协议。

关于第二个问题,Nexus 4(与大多数其他支持HCE的设备一样)通常会使用随机生成的防冲突标识符(UID)。在大多数设备上,为读取器设备的每个磁场激活(或者每当电话进入读取器设备的范围时)生成该随机ID。每当屏幕打开时,某些设备也会生成新的ID。