卡模拟、RC522 和 Nexus 4 的 NFC UID

问题描述 投票:0回答:2

我有两个问题:

首先,我想要模拟卡和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 读取器 RC522 附近。 但这些代码没有运行。 AID有问题吗? 我使用了艾滋病:

  • F04E66E75C02D8
  • F0394148148100
  • D2760000850101
  • F222222222

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

你能帮我吗?

android nfc apdu hce
2个回答
0
投票

您使用的辅助工具看起来不错(不过一个就足够了)。如果您的 HCE 服务未触发,您可能不会在另一端发出 SELECT(通过 AID)命令。因此,如果不知道您在通信的阅读器端做了什么,几乎不可能诊断那里出了什么问题。

请注意,您的上述代码与 NDEF 消息无关。如果您希望通过 HCE 正确传输 NDEF 消息,则需要在 HCE 服务中实施 NFC 论坛的类型 4 标签操作规范。此外,您应该避免在

processCommandApdu()
方法中使用任意字符串进行响应。相反,您应该实现基于 ISO/IEC 7816-4 APDU 的协议。

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


0
投票

对于您的情况,在模块 nfc 中配置的相同 apdu id 必须与服务 MyHostApduService 中的相同。

© www.soinside.com 2019 - 2024. All rights reserved.