我制作了一个Android应用程序,通过FTDI 230X芯片与定制硬件进行通信。应用程序正常工作并与连接的设备通信。但是在一些手机/平板电脑上它并不起作用,因为Android设备无法通过OTG识别连接设备,即使手机/平板电脑也支持OTG。该应用程序至少在12个不同的设备上进行了测试,Android版本4.0更新。也许有一半的应用程序工作正常并识别附加的硬件,而另一半没有看到附加的设备。
我无法理解导致此问题的原因,因为应用程序正在使用USB主机API。我也使用有根和无根设备进行测试,所以它并不依赖于此。
有人知道我还应该尝试或检查什么?或者这个问题取决于Android设备制造商的方式,他们在构建操作系统时没有包含对FTDI芯片的驱动程序支持?
答案 0 :(得分:2)
应用程序是否验证手机/平板电脑是否支持USB主机?即使在宣言声明之后,也要添加此验证。验证的方法是使用包管理器:
PackageManager pm = getActivity().getPackageManager();
boolean isUSBhost = pm.hasSystemFeature(PackageManager.FEATURE_USB_HOST);
如果手机/平板电脑支持主机功能,则isUSBhost将为TRUE,否则为FALSE。此代码可以放置在应用程序启动时(即活动),结果可用于指导后续流程。