安卓通过两种模式:USB Accessory 与 USB Host 模式支持多种 USB 外设与安卓 USB 配件(实现安卓配件协议的硬件)。在 USB 配件模式下,外部 USB 硬件充当 USB 主机。配件实例可能包含机器人控制器、扩展坞、诊断和音乐设备、售货亭、读卡器以及更多。这赋予了没有主机能力的安卓设备与 USB 硬件交互的能力。 Android USB 配件必须设计为与 Android 设备配合使用,并且必须遵守 Android 配件通讯协议。在 USB 主机模式下,安卓设备充当主机。设备实例包含数码相机、键盘、鼠标和游戏手柄等。专为各种应用和环境设计的 USB 设备仍然可以与可以正常与设备通信的 Android 应用程序进行交互。
图1显示了两种模式之间的差异。 当 Android 设备处于主机模式时,它作为 USB 主机并为总线供电。 当 Android 设备处于 USB 配件模式时,连接的USB硬件(在这种情况下为 Android USB 配件)充当主机并为总线供电。
图1. USB Host 与 Accessory 模式
Android 3.1(API级别12)或更新的平台直接支持 USB 配件和主机模式。USB 配件模式也作为附加库追溯到 Android 2.3.4(API 级别10),以支持更广泛的设备。 设备制造商可以选择是否在设备的系统镜像上包含附加库。
注意:无论平台级别如何,USB 主机和配件模式的支持最终取决于设备硬件。 您可以通过 <uses-feature> 元素过滤支持 USB主机和配件的设备。 有关详细信息,请参阅 USB 配件和主机文档。
调试注意事项
当使用 USB 配件或主机功能调试应用时,很有可能将 USB 硬件连接到 Android 设备。这将阻止通过 USB 与 Android 设备进行 adb 连接。您仍然可以通过网络连接访问 adb。 要通过网络连接启用adb:
1. 通过 USB 将 Android 设备连接到计算机。
2. 在 SDK platform-tools/ 目录中,在命令提示符下输入 adb tcpip 5555。
3. 输入 adb connect <device-ip-address>:5555 现在应该连接上了 Android 设备,并可以发出通常的 adb 命令,如:adb logcat。
4. 要将设备设置为侦听 USB,输入adb usb。
原文链接:https://developer.android.com/guide/topics/connectivity/usb/index.html