USB Accessory Mode
+ -

Android手机USB Accessory Mode模式

2025-03-17 5 0

一、模式定义与特点

==‌USB Accessory Mode‌== 是 Android 系统的一种特殊 USB 通信模式,其核心特性包括:

  • ==‌角色分配‌==
    • 外部配件(如读卡器、传感器)作为 ==‌USB Host‌==(主机),控制总线和供电
    • Android 设备作为 ==‌USB Device‌==(从设备),被动响应指令
  • ==‌应用场景‌==
    • 适用于无 OTG 功能的设备与专用配件交互
    • 常见于工业设备、医疗仪器等专用硬件场景
  • ==‌兼容性要求‌==
    • 最低支持 Android 3.1(API 12)或通过 Google API 插件扩展至 Android 2.3.4

二、进入 Accessory Mode 的流程

1. 硬件准备

设备类型 要求
Android 设备 支持 USB Accessory 功能,部分设备需开启开发者选项中的 ==‌“USB 调试”‌==
外部配件 遵循 AOA(Android Open Accessory)协议,并实现对应固件

2. 操作步骤

  1. ==‌物理连接‌==
    使用 USB 线将配件与 Android 设备连接

  2. ==‌模式切换‌==

    • ==‌自动切换‌==:系统弹出通知栏,选择 ==‌“文件传输”‌== 或 ==‌“配件模式”‌==
    • ==‌手动切换‌==(开发者选项):
设置 → 系统 → 开发者选项 → USB 配置 → 选择 "配件模式"

三、通信协议(AOA

协议交互流程

  1. ==‌初始化握手‌==

    • 配件发送控制请求 GET_PROTOCOL(命令码 51)检测设备支持的协议版本
    • 设备返回协议号(如 0x0100 表示 AOA 1.0)
  2. ==‌身份验证‌==
    配件通过 SEND_STRING 请求发送以下信息:

   // 请求参数示例
   bRequest: 52
   wIndex:   String ID(0=厂商名, 1=型号名, 2=描述等)
   wValue:   语言ID(如 0x0409 表示英语)
  1. ==‌启动模式切‌==
    配件发送 START 请求(命令码 53),触发设备重启并进入 Accessory Mode

四、数据传输格式

  • 控制传输(Control Transfer)
    用于协议协商和设备配置:

GET_PROTOCOL 请求格式:

bmRequestType bRequest wValue wIndex wLength
0xC0 51 0 0 2
  • 批量传输(Bulk Transfer)
    通过预定义的端点进行应用数据交换:

端点描述符示例:

Endpoint Descriptor:
  bEndpointAddress  0x81  (IN端点)
  bmAttributes      0x02  (批量传输模式)
  wMaxPacketSize    512   (最大包大小)
// 检测协议版本
usb_control_transfer(
  device_handle,
  USB_DIR_IN | USB_TYPE_VENDOR,
  51,  // GET_PROTOCOL
  0, 0,
  &protocol_version,
  2,
  TIMEOUT
);

// 发送设备信息
usb_control_transfer(
  device_handle,
  USB_DIR_OUT | USB_TYPE_VENDOR,
  52,  // SEND_STRING
  0, 0,
  "MyAccessory",  // 厂商名称
  strlen("MyAccessory"),
  TIMEOUT
);

六、注意事项

  • 电源管
    配件需提供≥500m 的供电能力(部分高性能设备需 1A 以上)

  • 兼容性验
    调用 UsbManager.getAccessoryList() 检测当前连接的配件

  • 用户授
    必须动态请求 UsbManager.requestPermission() 获取通信权限

0 篇笔记 写笔记

UVC彩色摄像头与红外(IR)摄像头相机
常见的UVC摄像头叫彩色相机,是通过摄像头镜头将捕捉的彩色画面进行感光,数据压缩,再通过USB线缆传递给我们的主机,通过我们普通的相机应用软件打开该彩色相机,就可以实时的查看它的彩色画面了。我们经常见到的UVC摄像头基本上全是这类相机。不过,现实中还有一种特殊的相机,它不是捕捉彩色画面的,而是通过......
USB PD3.1进入与退出EPR Mode的程序
从USB PD3.1开始,支持EPR模式,故在进行协商时:第一步:明确PD连接此阶段,Source/Sink会确认双方是否都有宣告支持EPR Mode:Source/Sink,需要先建立Explicit PD Contract。在Source Capabilities与Request Mess......
Android手机USB Accessory Mode模式
一、模式定义与特点==‌USB Accessory Mode‌== 是 Android 系统的一种特殊 USB 通信模式,其核心特性包括:==‌角色分配‌== 外部配件(如读卡器、传感器)作为 ==‌USB Host‌==(主机),......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!