USB Host and Accessory

.Android通过两种模式支持许多的USB外设和Android USB附件(那些实现了Android accessory协议的硬件):USB accessory和USB host。在USB accessory模式下,外部USB硬件扮演USB hosts的角色。accessories的例子可能包括自动控制器;插接站;诊断和音乐设备;kiosks;读卡器;及更多其他的。这给那些不具有host功能的Android设备提供了与USB硬件交互的能力。Android USB accessories必须被设计来与Android设备一起工作,并且必须符合Android accessory通信协议。在USB host mode,Android设备扮演host的角色。这样的设备包括数码相机,键盘,鼠标,和游戏控制器。那些为广泛的应用和环境而设计的USB设备依然可以与那些能够正确地与设备交互的Android应用交互

Figure 1展示了两种模式的不同。当Android设备处于host模式下时,它扮演USB host的角色并驱动总线。当Android设备处于USB accessory模式下时,它连接的USB硬件(在这种情况下是一个Android USB accessory)扮演host的角色并驱动总线。

Figure 1. USB Host和Accessory模式

在Android 3.1 (API level 12)或更新的平台上,是直接支持USB accessory和host模式的。USB accessory模式也被以一个an add-on library的形式移植回了Android 2.3.4 (API level 10),以支持更广泛的设备。设备制造商可以选择是否在设备的系统镜像中包含add-on library。

注意:支持USB host和accessory模式最终依赖于设备的硬件,而无论平台level。你可以通过一个<uses-feature>元素来过滤出支持USB host和accessory的设备。请参考USB accessoryhost文档来获取更多详细内容。

Debugging considerations


当调试使用了USB accessory或host features的应用时,你很可能要把USB硬件连接到你的Android设备。这将使得你无法通过USB来建立adb到你的Android设备的连接。你依然可以通过网络连接访问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。
Done.

译自:http://developer.android.com/guide/topics/connectivity/usb/index.html

转载于:https://my.oschina.net/wolfcs/blog/341126