2011-08-24 40 views
0

我有一个USB设备(指纹识别器),我将其连接到Galaxy S2(因为它支持USB主机模式),并将其用于我自己的应用程序中,利用最新的Android USB API http://developer.android.com/reference/android/hardware/usb/UsbDevice.html安卓系统中用于Samsung Galaxy S2的USB外设驱动程序集成

当我将阅读器连接到手机时,它会显示“未知的USB外围设备”,并且阅读器已打开,因此没有电源问题。 我有阅读器的Linux驱动程序源代码,所以我可以在必要时为ARM体系结构编译它。

如何将此驱动程序集成到Android内核(如果可能,因为它基于Linux)?是可以创建一个单独的模块?根特权是绝对需要的?

或者更简单一些,我可以通过USB API确定外设类型吗?

+0

看起来官方USB主机api只能进入api级别12,而S2似乎随姜饼一起发布(api级别9或10),所以目前还不清楚这种方法是否可用,除非三星以某种方式支持它。如果您可以在该设备上安装定制的内核,或者您拥有root并且它已经支持模块,并且现在已经发布适当的源代码,那么应该可以使用传统的Linux内核驱动程序方法。 –

+0

它曾经工作,但苹果起诉。 –

回答

0

我知道可能与API不兼容。 但是,由于Galaxy本身支持USB主机模式也许没有问题...

但是,关于驱动程序集成到内核与单独的模块,是否有指导,解释过程?

0

你将不得不编译你的linux驱动程序作为一个模块来获得“fingerprintdriver.ko”。像使用ARM交叉编译器的Linux 2.6.35(版本取决于您的Android版本)驱动程序一样。现在,我在博客上看到,你应该从Android工具包中获得ARM编译器,因为它有一点点区别,有时候会有所作为,但我从来没有尝试过,因为我使用的是Android提供的那个开发工具包。然后,您将使用命令“insmod /modules/fingerprintdriver.ko”进行安装。你也应该把它放在“init.rc”文件中,以便在启动时自行安装。但取决于驱动程序,它可能不会(很可能不)被Android API看到。如果这是你想要的,你将不得不编写这段代码来让设备被看作是一个“传感器”。然后,您的设备将可供整个Android程序员社区使用。如果您只是为了您自己的目的而不是整个Android应用程序员社区使用它,您可能只是想通过USB API使用它。对你来说更少的工作。

希望小小的信息有一定的帮助。

相关问题