【问题标题】:How to find if Android Handset or Tablet supports Android Open Accessory (AOA) protocol?如何确定 Android 手机或平板电脑是否支持 Android Open Accessory (AOA) 协议?
【发布时间】:2014-03-05 07:51:26
【问题描述】:

我正在开发一个应用程序来使用 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 的支持吗?

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

附:我已经阅读了类似问题的答案 - 1)How to tell if an Android device has Open Accessory Mode 2)Does the Acer Iconia Tab A500 support Accessory mode? 3)What Android Tablet Currently Supports Accessory Mode for ADK Development 4)Which android devices support the ADK / open accessory - 没有任何结果。

【问题讨论】:

    标签: android usb android-open-accessory


    【解决方案1】:

    看看Android AOAAOA 2.0。 AOA 已经发布了两个版本,1.0 和 2.0。最新的是 2.0。

    Android 开放附件协议 2.0 增加了两项新功能:音频输出(从 Android 设备到附件)和支持作为一个或多个人机接口设备 (HID) 到 Android 设备的附件。

    为了知道AOA的版本号,发送USB控制请求如下

    requestType:    USB_DIR_IN | USB_TYPE_VENDOR
    request:        51
    value:          0
    index:          0
    data:           protocol version number (16 bits little endian sent from the
                    device to the accessory)
    

    对于支持 AOA 2.0 的设备,控制请求将返回 2。

    【讨论】:

    • 谢谢,但我的问题是不同的——我的需要是android应用程序本身应该检测手机或平板电脑是否支持AOA。我认为您的回答适合连接到手机或平板电脑的配件。
    【解决方案2】:

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

            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();
            }
    

    如问题中所述,此代码是在手机和平​​板电脑上测试的。手机提示“支持 USB 附件”,而平板电脑提示“不支持 USB 附件”。

    【讨论】:

    • 谢谢您,先生,这很荣幸。你将被命名为国王之手!
    猜你喜欢
    • 1970-01-01
    • 2018-05-10
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2011-08-04
    • 2013-01-19
    • 2012-12-08
    • 1970-01-01
    相关资源
    最近更新 更多