本文 接着前面的文章 《Android下USB Accessory的实现分析 (三)— Android Open AccessoryProtocol》

2.2 Android上层对USBAccessory设备的处理流程

下图是g_android.ko驱动检测到USB Accessory设备之后大致的处理流程:
Android下USB Accessory的实现分析 (四)--- AOA上层分析_第1张图片

  1. 首先g_android.ko驱动发现USB Accessory设备发送了“ACCESSORY_START”控制传输命令后,会发出一个UEVENT消息(“ACCESSORY=START”)。

  2. UsbDeviceMannager内部实现了一个UEventObserver类成员(mUEventObserver),会监测usb_accessory相关的UEVENT信息,当收到"ACCESSORY=START"信息时,

  3. 开始重新设置sys.usb.config属性,并由后台的property service进程执行由init.usb.rc文件所指定的设置动作,往“/sys/class/android_usb/android0/”路径下写入对应的配置信息。

  4. 配置完成后,“/sys/class/android_usb/android0/enable”文件会被写入“1”,Android设备切换打开USB Accessory功能接口,重新执行枚举动作。枚举完成后,再发出UEVENT信息“USB_STATE=CONFIGURED”。

  5. 接下来该UEVENT信息再次被mUEventObserver所监测到,并经过几次调用,最终由UsbSettingsManager发出定义为USB_ACCESSORY_ATTACHED的Intent。如果安装有相应的应用程序,则该Intent则会激活对应的Activity开始执行。

    Framework中相关的代码路径如下:    Ø   frameworks\base\services\java\com\android\server\usbØ   frameworks\base\packages\SystemUI\src\com\android\systemui\usbØ   frameworks\base\services\jni\ com_android_server_UsbDeviceManager.cppAndroid对外提供的Accessory设备编程接口见如下package:"com.android.future.usb""android.hardware.usb"对应的代码路径如下:Ø   frameworks\base\libs\usb\src\com\android\future\usbØ   frameworks\base\core\java\android\hardware\usb

至于如何编写应用与Accessory设备交互,可参见:
http://developer.android.com/guide/topics/connectivity/usb/accessory.html

Google官方也提供了示例代码,在源代码包的如下路径:
Ø device\google\accessory\demokit\app\src\com\google\android\DemoKit

3. 小结

Android系统对USBAccessory设备的支持,为扩展Android平台的外围设备功能,吸引更多的硬件厂商和开发者开发出更多有趣和有创新意义的应用产品提供了机会,也会让整个Android阵营变得更加丰富多彩。
本文从USB功能驱动到Android Framework层对USB Accessory的整个工作流程作了大致的说明,希望有助于有兴趣的开发者更好地理解USB Accessory的工作原理和流程。





本文参考:
Android USB Accessory分析
Android USB通讯(完整版)

Android 使用 Usb Accessory 模式与 linux 下位机进行通信

https://blog.csdn.net/dyq1991/article/category/7249114

更多相关文章

  1. Ubuntu识别不到Android设备
  2. 转载 Android 通过adb shell命令查看内存,CPU,启动时间,电量等信息
  3. Android:系统信息(内存、cpu、sd卡、电量、版本)的获取
  4. AVD(android virtual device)路径设置
  5. Android中获取应用程序(包)的信息-----PackageManager的使用(
  6. APK安装路径移动至外部存储设备
  7. Android 设备管理器和有权查看使用情况的应用详解

随机推荐

  1. android 导入项目报错
  2. Android(安卓)MVVM之Databinding(二) 使用
  3. android 电池(二):android关机充电流程、充
  4. Android(安卓)SDK Android(安卓)NDK Andr
  5. Android中实现跑马灯效果
  6. Android之动画Animation的使用
  7. android 让一个控件按钮居于底部的几种方
  8. Android的UI结构试图工具hierarchyviewer
  9. 学习Android(安卓)studio 个人总结小经验
  10. android UI小结(一)