繁体   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