我想用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消息。
有人能帮我吗?
发布于 2018-12-06 05:59:55
对于任何坚持这个问题的人,我读过@Michael Roland提出的NFCForum-TS-Type-4-Tag。整个想法是正确的。您所需要做的就是模拟发送和接收命令的过程,将字节数组转换为NDEF消息。我创建了两个存储库,一个总结了整个包中关于将string转换为NDEF message的内容,另一个是验证Android HCE是否正确的iOS Reader NDEF TAG。
所以祝你好运!
发布于 2015-03-19 00:38:17
使用Android HCE模拟被检测为NDEF标签的标签并不像发送NDEF消息以响应SELECT APDU那么简单。您需要实现NFC论坛类型4标签操作规范。您可以从NFC Forum website获得该规范。
基本上,您需要为AID D2760000850101
注册一个HCE服务,该服务实现了阅读器端用来访问Type4标签的几个APDU命令:
00 A4 04 00 07 D2760000850101 00
00 A4 00 0C 02 E103
00 A4 00 0C 02 xxyy
其中,xxyy
是在能力容器二进制文件中指定的NDEF数据文件的文件ID (用于从能力容器或NDEF数据文件中读取数据,以当前选定的为准)
00 B0 xx yy zz
其中xx yy
是要读取的偏移量,zz
是要读取的字节数。
重要提示:请注意,Android设备模拟的这种NFC论坛类型4标签不能用于在第二个Android设备上自动触发应用程序(至少不可靠?)。将两个Android设备放在一起通常会导致它们建立点对点链接(即使光束被关闭!)。只有第二个Android设备上的前台应用程序可以使用NFC Reader模式API绕过Android光束,并可靠地检测模拟的标签。
https://stackoverflow.com/questions/29122848
复制相似问题