android - 如何重新连接到 IsoDep 标签?

标签 android nfc

我正在尝试从 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/

相关文章:

java - 在Android中,多部分实体是否也用于下载文件,因为我看不到该类的任何示例或详细描述

Android:如何禁止在扫描 NFC 标签时重新打开您的应用程序?

java - 如何在 Android 上使用 NFC 从扇区读取数据

android - 方法 NdefRecord.createTextRecord ("en", "string") 在 API 级别 21 以下不工作

java-me - 仅当使用诺基亚 SDK 编译时为 "Invalid Application. Delete?"

Visual Studio 2015 基本应用程序中的 Java 版本 1.7(Android、Gradle)

android - 带有改造和嵌套 JSON 响应的 NPE

android - Android API 方法 CardEmulation.getInstance() 的 UnsupportedOperationException

java - Android Post UTF-8 HttpURLConnection

android - 为 Android 离线(手动)安装 Intel x86 Atom 系统镜像