【问题标题】:How to Connect External NFC Card Reader to Tablet如何将外部 NFC 读卡器连接到平板电脑
【发布时间】:2012-03-16 02:56:44
【问题描述】:

现在我的平板电脑有 OS Android 2.3.3 而不是 NFC 手机,所以我需要将外部读卡器连接到平板电脑。请告诉我我应该更喜欢哪个读卡器以及将读卡器连接到平板电脑所需的任何驱动程序. 内置的 NFC 库是否支持该阅读器? 提前致谢。

【问题讨论】:

    标签: android nfc cardreader


    【解决方案1】:

    我找到了答案,ACS 现在为他们的读者提供了 android 库和示例应用程序。您可以找到库 here 以及一些支持 android 的阅读器的信息和视频演示是here

    唯一的问题是 ACS android 库只支持 Android 3.1 及以上版本。 希望对你有帮助。

    如果您仍有疑问,请随时提问。

    【讨论】:

      【解决方案2】:

      Android 2.3 和 4.0 中内置的 NFC 库仅支持 NXP Semiconductors 的 PN544 NFC 芯片。我认为市场上没有任何读卡器使用它,因为该芯片是专门为移动设备设计的。不过,您或许可以找到支持其他 NFC 芯片的 Android NFC API 的替代实现。

      另一个问题可能是您的平板电脑很可能没有安装所需的 NFC 库,包括所需的系统服务 (NfcManager)。毕竟,您的平板电脑不支持 NFC,因此不需要这些软件组件。因此,必须为您的平板电脑创建一个包含这些软件组件的新 ROM 系统映像。

      使用众多常见的桌面阅读器之一可能并不可行。创建所有必要的软件以将其集成到 Android 中并不是一项简单的任务。购买带 NFC 的 Android 手机或等待带 NFC 的 Android 平板电脑上市可能更容易。

      【讨论】:

      • 感谢您提供如此丰富的答案,我有 ACR122U NFC 阅读器。是否可以连接或与该阅读器交互?是否需要任何驱动程序或 SDK?
      • 请看一下grundid.de/nfc,看看这对您是否有用。
      • 我看到了那个链接。没有关于将 NFC 阅读器连接到平板电脑的信息。它显示了如何交互或连接 NFC 手机与 PC。但我了解的一件事是我们可以读取或写入数据到 NFC 手机的芯片。再次感谢。
      【解决方案3】:

      Froyo 2.3(支持 NFC 的最低 SDK 版本)或 Ice Cream Sandwich 4.0 都不兼容多种芯片。

      当制造商推出具有不同 NFC 芯片的新手机时,是因为有人创建了使用此类芯片的驱动程序并与 Android 的 NFC 类接口,特别是 NfcManager 类和代表本地 NFC 适配器的 NfcAdapter 类。

      最佳情况下,您可以使用 Android NDK 创建低级 C/C++ 类,以某种方式将外部 NFC 读卡器与 Android 进行通信,然后使用 NDK 进行更多自定义编程以使 SDK 上的 NfcAdapter 检测到它...而且不保证您会成功。

      而且...如果您正在考虑前往http://www.alibaba.com 并导入带有 NFC 阅读器的平板电脑,请三思而后行,因为这些阅读器可能无法让您完成 NXP Semiconductors 芯片与 Android Beam (TM) 的所有功能例如读/写,并支持 NFC-A、B、F、V 或 ISO-DEP 的不同 I/O 操作。

      为了你的时间(因为时间是当今任何人最宝贵的资产)。我认为您最好的选择是购买几部 NFC 手机,例如 Galaxy Nexus S、DROID Razr、Xperia S、HTC Incredible 等……这些手机开箱即用,这就是我们正在做的事情。

      【讨论】:

        【解决方案4】:

        嘿,萨钦, 由于您的设备没有 NFC,因此它没有 NFC 无线电,因此无法连接(读取或写入)到 NFC 卡。根据 NFC 库,当您尝试获取 NFCAdapter 时,它将始终返回 null。 所以你至少需要一个支持 nfc 的安卓设备来进行任何实验。

        在我的项目中,我们使用了 ACR122 智能卡读卡器,该读卡器将连接到 pc 而不是 android 设备。此读卡器用于读取任何 nfc 标签。启用了 nfc 的 Android 设备将在卡模拟模式下充当 nfc 标签。

        现在是问题“内置 NFC 库是否支持该阅读器”的下一部分。

        所以这个读卡器可以读取卡值。

        【讨论】:

          【解决方案5】:

          使用 ACS NFC 阅读器是否可行:

          Here你能找到库和示例代码的文档吗?但是,它似乎没有写入数据的选项。如果您想写入您的 NFC 阅读器,请使用传输函数发送字节数组。

          private static final byte READ = (byte) 0x30;
          private static final byte WRITE = (byte) 0xA2;
          

          这些字节是传输功能的默认读写字节。默认NFC协议的完整文档可以在here找到

          示例:

              byte[] response = new byte[300];
                  int responseLength;
                  try {
                      responseLength = mReader.transmit(slotNum, command, command.length, response, response.length);
                  } catch (ReaderException e) {
                      e.printStackTrace();
                      return "executeCommand: error: " + e.getMessage();
                  }
          

          Slotnum 是您要使用的阅读器的编号。如果我是正确的,如果您使用的是一个阅读器/USB 设备,则该值始终为 0。

          示例命令:

          new byte[] command {(byte) WRITE, 0x04, 0x06, 0x0a, 0x00, 0x21}
          

          第二个字节是要写入的页面地址。第 4 - 15 页是可写的(第 0 和第 1 页是 id,第 2 页是 lockbytes,第 3 页是 OTP。它们都是只读的)。

          Read 函数的工作方式与 WRITE 函数相同,仅在数组中发送 3 次 0x00 以获取正确的读取设置:

          new byte[] command {(byte) READ, 0x04, 0x00, 0x00, 0x00}
          

          第二个字节是要阅读的页面地址。

          【讨论】:

            【解决方案6】:

            这个视频能回答你的问题吗:http://www.youtube.com/watch?v=6Xe7Ux0cTuI “低成本、简单、无需驱动程序 - EM4100 或 Mifare RFID 阅读器,适用于 Ipad、Android 和 Windows”

            PS:我不为这家公司工作,也从不尝试他们的解决方案。

            【讨论】:

              【解决方案7】:

              这是一个很好的话题。我赞同 RacZo 对阿里巴巴采购的平板电脑中 NFC 库支持的担忧。由于设备中的 NFC 芯片组各不相同,有些设备不支持或不支持某些操作,因此您需要小心并事先在这些设备上测试您的应用。

              ACS 阅读器是一种经济高效的解决方案,并且有一些成熟且支持良好的库和 SDK 支持其与 Android 的集成。 ACS 外部阅读器的缺点是电池寿命。因为它垄断了 USB 端口,Android 平板电脑不允许在连接外围设备时通过 USB 端口充电。因此,如果您的应用程序是某种信息亭或自助服务应用程序,这可能是个问题。

              有一篇很好的帖子here 介绍了您在面对这一挑战时的各种选择。在不了解您的应用程序的情况下,很难推荐一种或另一种方式。

              【讨论】:

                【解决方案8】:

                在这里回答有点晚了,但我实际上已经尝试实现一个尽可能接近原生 NFC 的外部 NFC 阅读器。

                可以添加一个额外的服务,但是常规的 NFC 初始化(NfcAdapter 等)不会知道这个服务,所以它必须被额外初始化。

                结果是,在库存 ROM 上替换或添加内置 NFC 服务在技术上是不可能的 - 以“替换方式”。

                重用一些原生 NFC 类,如 Tag 和 IsoDep 是可能的。

                但是,作为 NFC 应用程序的开发人员,您确实不希望外部服务提供与内置服务相同的功能。外部阅读器可能具有更多功能,并且您至少想知道阅读器是否已插入。

                请参阅External NFC API 了解更多信息(注意:它不是完全开源的产品)。

                【讨论】:

                  猜你喜欢
                  • 2016-06-18
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2012-06-23
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-09-28
                  相关资源
                  最近更新 更多