android - 在 Android 中开发智能卡读卡器

标签 android usb smartcard apdu

我们开发了一个带有微 Controller 的原型(prototype)板,它可以与智能卡通信(它可以读取 ATR,发出和读取对 APDU 命令的响应等)。现在我想在 Android 手机或平板电脑上使用这个硬件。我们的开发板有一个 USB 连接,通过它我们可以通过 Android 读取和写入 MCU。

最终目标是在支持 PKCS #11 的 Android 平台上拥有一个正常运行的智能卡读卡器,并为智能卡读卡器的最终用户提供一个库,以便他们可以与他们的卡进行通信。

我已经阅读了一些关于这个主题的讨论,其中一些说我必须构建一个自定义的 Android 才能做到这一点。我对 Android 架构不是很熟悉,无法理解为什么当我可以通过 USB 与外围设备(读卡器)通信时我必须重新构建 Android。在我看来,如果我提供一个实现类 CCID 接口(interface)的库,用户就可以通过将我的库集成到他们的目标 .apk 文件中来使用 Android USB 堆栈与我的阅读器通信。

以上方案有没有我们不知道的问题?我担心我们缺少一些关于 Android 或智能卡阅读器的基本知识(例如:安全性),这会在我们开始实现上述库时给我们带来问题。

最佳答案

我已将 USB 外围设备集成到我的自定义平台的自定义 Gingerbread 发行版中。您要自定义 Android 平台的唯一原因是添加或修改一些驱动程序,使您可以访问 USB 设备。如果您的 USB 设备已经使用标准 Android 设备支持的协议(protocol),祝您好运!你几乎准备好了。但在庆祝你的胜利之前,我会在各种设备上进行尝试。在 Android 和内核级别,Google 提供了一个非常准系统的发行版,其中包含大量驱动程序源代码。由手机/平板电脑制造商根据其设备使用的硬件来决定他们将包含哪些低级驱动程序和协议(protocol)。由于手机/平板电脑的内存量有限,一般规则是只包含需要的内容。在 PC-Linux 架构上,您没有问题,因为硬盘空间如此之大以至于您包含了所有存在的驱动程序,并且您让系统根据它发现的内容来选择它需要的内容。

希望这个简单的回答对您有所帮助。

关于android - 在 Android 中开发智能卡读卡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15642615/

相关文章:

java - 无法执行 dex : GC overhead limit exceeded -> libraries

android - 如何为倒数计时器添加时间?

c - 从 USB 端口读取数据的最佳跨平台库是什么?

iOS TCP/IP over USB 与 Linux 端

java - 如何在我的媒体播放器中调整 setOnErrorListener 并在 textview 中将状态设置为 "offline"

android - 在 Android Manifest.xml 文件上更改 Theme.Holo 无法在 Android 上运行

android - 将 USB 设备连接到 Android 模拟器?

智能卡上的 C

smartcard - pro.javacard.gp.GPException : STRICT WARNING: Unfused JCOP detected

c# - 如何更改 Mifare Classic 1k Key A 和 Key B