我正在尝试从 Android 手机向 nfc 标签发送一些 apdu 命令并获得答案。使用的技术类型是 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
来提高超时值。
关于android - 如何重新连接到 IsoDep 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30233264/