如何查找 Android 手机或平板电脑是否支持 Android Open Accessory (AOA) 协议?

Sun*_*nGa 2 usb android android-open-accessory

我正在开发一个应用程序来使用 Android 开放配件 (AOA) 协议连接配件。

我使用手机 (Android 4.2.2) 或平板电脑 (Android 4.1) 测试该应用程序。这两种设备均具有 USB Micro-B 插座,而配件则具有 USB A 型插座。我使用Micro-B 插头转 USB-A 插头电缆将前面提到的任何一台 Android 设备与 Accessory 连接。

一旦配件连接到手机或平板电脑,该应用程序就会弹出。

它在手机上按预期工作,但在平板电脑上却不然。在花费大量时间调试此问题后,我发现平板电脑可能不支持 AOA 协议。(JFYI:该表支持 OTG 模式)。

因此我的问题是:

1)有没有人遇到过可以告知设备是否支持AOA的应用程序?2)有谁知道在Android设备上检测AOA支持的编程方法吗?

预先感谢社区成员即将提供的帮助。

PS 我已经阅读过类似问题的答案 - 1)如何判断 Android 设备是否具有开放配件模式 2) Acer Iconia Tab A500 支持配件模式吗? 3)目前哪些 Android 平板电脑支持 ADK 开发的配件模式 4)哪些 Android 设备支持 ADK/开放配件 - 没有任何结果。

Sun*_*nGa 5

我找到了答案。可以对 Android 应用程序进行编程以检测是否支持 USB 配件模式。诀窍是使用 android PackageManager 来验证 FEATURE_USB_ACCESSORY 是否存在于手机或平板电脑上。下面给出了相关的代码片段:

        PackageManager pm;
        pm = getActivity().getPackageManager();
        boolean isUSBAccessory = pm.hasSystemFeature(PackageManager.FEATURE_USB_ACCESSORY);

        if(!isUSBAccessory){
            Toast.makeText(getActivity(), "USB Accessory not supported", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(getActivity(), "USB Accessory supported", Toast.LENGTH_SHORT).show();
        }
Run Code Online (Sandbox Code Playgroud)

正如问题中提到的,此代码在手机和平​​板电脑上进行了测试。手机会提示“USB 配件支持”消息,而平板电脑则会提示“USB 配件不支持”。