如何重新连接到 IsoDep 标签?
How can I reconnect to IsoDep tag?
我正在尝试从 android phone 向 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代码已经有一段时间了)。
因此,一旦标签停止响应您的请求,连接和重新连接将无济于事。在这种情况下,您所能做的就是物理删除标签并将其再次提交给 reader。
如果您 运行 遇到超时问题,请尝试通过在标记对象上调用 setTimeout
来提高超时值。
我知道这是一个旧线程。但我碰巧遇到了同样的问题。不断地,如果连接闲置很长时间,比如大约 1 分钟,它就会关闭。即使在重新触摸标签后,phone 也无法重新连接。我必须从设置中再次禁用和启用 NFC 才能恢复连接。
据我所知,在所有这些测试中,我认为 phone 或 OS 导致 NFC 硬件进入故障状态。或者它可能处于睡眠模式以节省电量。因为发生这种情况时,不同的 phone 仍然可以连接到标签。但是你必须在原来的 phone 上切换 off/on NFC 才能重新连接。这可能是由硬件或驱动程序中的看门狗定时器引起的。
一种解决方法是ping NFC标签,例如检查标签状态,每10秒左右保持连接。但是,你正在耗尽 phone.
的力量
我也在尝试 NfcAdapter 中的 ignore 方法,看看它是否是一种更优雅的处理方式。
标记:NFC 连接断开超时
我正在尝试从 android phone 向 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代码已经有一段时间了)。
因此,一旦标签停止响应您的请求,连接和重新连接将无济于事。在这种情况下,您所能做的就是物理删除标签并将其再次提交给 reader。
如果您 运行 遇到超时问题,请尝试通过在标记对象上调用 setTimeout
来提高超时值。
我知道这是一个旧线程。但我碰巧遇到了同样的问题。不断地,如果连接闲置很长时间,比如大约 1 分钟,它就会关闭。即使在重新触摸标签后,phone 也无法重新连接。我必须从设置中再次禁用和启用 NFC 才能恢复连接。
据我所知,在所有这些测试中,我认为 phone 或 OS 导致 NFC 硬件进入故障状态。或者它可能处于睡眠模式以节省电量。因为发生这种情况时,不同的 phone 仍然可以连接到标签。但是你必须在原来的 phone 上切换 off/on NFC 才能重新连接。这可能是由硬件或驱动程序中的看门狗定时器引起的。
一种解决方法是ping NFC标签,例如检查标签状态,每10秒左右保持连接。但是,你正在耗尽 phone.
的力量我也在尝试 NfcAdapter 中的 ignore 方法,看看它是否是一种更优雅的处理方式。
标记:NFC 连接断开超时