我正在尝试从android手机发送一些apdu命令到nfc标签并获取答案。使用的技术类型为IsoDep。一切正常,但是有时,当发送命令之间的时间过长时,标记将切换为禁用状态,此后每次重新连接都会失败。
我的代码:
public byte[] transferCommand(byte[] command) throws Exception {
byte[] result = null;
if (iso == null) {
iso = IsoDep.get(tag);
iso.connect();
}
if (!iso.isConnected()) {
try {
iso.close();
iso.connect();
result = iso.transceive(command);
} catch (Exception ex) {
iso.close();
}
}
return result;
}
有人可以帮我吗?非常感谢。
在connect
和相关的命令只是管理到标签的逻辑连接。即:它们授予您的线程和应用程序对标记对象的独占访问权限。他们对物理标签连接不做任何事情。(至少据我所知,距离我上次阅读NfcService代码已经有一段时间了)。
因此,一旦标签停止响应您的请求,连接和重新连接将无济于事。在这种情况下,您所能做的就是从物理上除去标签,然后将其再次显示给阅读器。
如果遇到超时问题,请尝试通过调用setTimeout
标记对象来提高超时值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句