摘要

本文介绍了USB Accessory的一些背景知识,并从Linux驱动到Android Framework层,阐述了USB accessory的整个实现过程。

关键词: Android,USB,Accessory, ADK

1. 背景介绍

自Android 3.1之后的版本,Google引入了USB Accessories的概念,并提供了相关的开发库。
下面是developer.android.com上的一段相关说明:

Android 3.1 Platform Highlights
http://developer.android.com/sdk/android-3.1-highlights.html

● Connectivity for USBaccessories
Android 3.1 addsbroad platform support for a variety of USB-connected peripherals andaccessories.
Users can attach many types of input devices (keyboards, mice,game controllers) and digital cameras.
Applications can build on the platform’sUSB support to extend connectivity to almost any type of USB device.

The platformalso adds new support for USB accessories — external hardware devices designedto attach to Android-powered devices as USB hosts.
When an accessory isattached, the framework will look for a corresponding application and offer tolaunch it for the user.
The accessory can also present a URL to the user, fordownloading an appropriate application if one is not already installed. Userscan interact with the application to control powered accessories such asrobotics controllers; docking stations; diagnostic and musical equipment;kiosks; card readers; and much more.

The platform’sUSB capabilities rely on components in device hardware, so support for USB onspecific devices may vary and is determined by device manufacturers.

上面一段文字说得比较清楚:
Android3.1之后的版本不仅可以让Android设备作为USB Host的角色支持USB鼠标、键盘、游戏手柄等,还可以以USB Device的角色与一些具有USB Host功能,但却扮演着配件角色的设备相连,Google把这种设备称为“Accessory”(附件)。这类Accessory可能是如下设备:

机器人控制器、Dock(基座)、诊断设备、音响设备、配电设备、读卡器等等。

Google引入USB Accessory概念的原因应该主要有如下:
一、非常多的Android设备不具有USB Host的功能而只具有USB Device功能(例如绝大部分Android手机),或者即使具备USB Host的功能,也承担不起对USB外设供电的任务,因为便携式Android设备本身的电池容量就很有限。

二、原来的Android设备,作为USB Device所实现的功能相对比较简单,内置的功能只有U盘或ADB调试设备等,Google希望提供应用层的USB开发库,让更多的软硬件厂商来开发新的功能,比如说安装一个APK应用,然后通过USB连接到一个与电视机配套的Dock上,就可以让一台Android手机变身为一个电视机遥控器。

图1-1显示了USB Host和Accessory两种不同模式的区别。
当Android设备作为Host模式时为USB总线供电;当Android设备连接到一个USB Accessory设备时,USB Accessory设备以Host身份为USB总线供电。

图1-1 USB Host和Accessory两种模式

如果要在Android 3.1之前的Android 2.3.4版本上支持USB Accessory功能,可以通过添加“com.android.future.usb”add-on library的方式来支持,详情可见:http://developer.android.com/guide/topics/connectivity/usb/accessory.html

另外Android 4.1后的版本还增加了对USB AudioAccessory设备的支持,可实现USB接口的音箱功能,并在Google I/O 2012开发者年会上作了产品展示,见如下链接:
http://www.engadget.com/2012/06/30/gear4-speaker-dock-supports-usb-audio-for-jelly-bean-at-google-i/

对于硬件开发者如何开发出USB Accessory设备,Google官方也给出了指导,并提供了ADK(The Accessory Development Kit)开发环境,详情见:
http://source.android.com/accessories/
http://developer.android.com/tools/adk/index.html
在Google官方文档的指导下,硬件设计爱好者可以很方便地在Arduino(一个开源硬件平台)等硬件平台上开发出自己感兴趣的Usb Accessory设备。

本文在此不准备深入探讨如何在其他硬件平台上开发Usb Accessory设备,而是旨在分析Android平台下对USB Accessory设备的支持具体是如何实现的。这里选择了比较主流的Android 4.1平台进行分析(事实上Android 4.1之后这部分代码变化不大)。

下一篇文 章 文章 《Android下USB Accessory的实现分析 (二)— 底层驱动设计实现》

本文原文,欢迎前往学习原文:
Android下USB Accessory的实现分析

Android USB Accessory分析
Android USB通讯(完整版)

Android下USB Accessory的实现分析 (一)--- AOA背景介绍相关推荐

  1. Android下USB Accessory的实现分析 (三)--- Android Open AccessoryProtocol

    本文 接着前面的文章 <Android下USB Accessory的实现分析 (二)- 底层驱动设计实现> 2.1.4 Android Open AccessoryProtocol 为了支 ...

  2. Android Q USB Tethering 端口切换分析

    需求:在开启 USB Tethering 后,同时需要开启 diag 端口供 QXDM 调试使用.于是 trace code 大概分析了一下设置 USB Tethering 过程,比较毛糙,如有不正之 ...

  3. android下usb框架系列文章---(2)Usb mass_storage turn on的过程

    下面从framework层的ui来看一下插入usb后share的过程,这个动作的触发是从status bar下面弹出的usb connect开始的. frameworks/base/packages/ ...

  4. Android USB Accessory分析

    转自:https://blog.csdn.net/yingzhao80/article/details/45511351 Android下USB Accessory的实现分析 摘要:本文介绍了USB ...

  5. 安卓USB开发教程 三 USB Accessory

    USB Accessory(配件模式) USB 配件模式允许用户连接专为 Android 设备设计的 USB 主机硬件.配件必须遵守 Android Accessory Development Kit ...

  6. Android 连接USB设备(配件模式)

    Android 连接USB设备(主机模式) Android 连接USB设备(配件模式) 上一章介绍了Android USB主机模式,以及两种模式的区别,本章主要介绍USB 配件模式. USB 配件模式 ...

  7. Android手机USB OTG支持网线

    之前做过一个基于联发科的项目,项目中需要添加USB OTG网线的支持.最近翻看原来的笔记,开发的步骤总结如下,在此记录. 1. 首先查阅MTK给出的开发文档,确认是否支持USB OTG功能,在文档中搜 ...

  8. Android设备间USB传输(OTG)

    1. USB概述 为了统一电脑和外围设备的接口标准,方便用户使用以及端口扩展,Intel和USB-IF组织于1994年开始开发一个通用总线标准-- USB(Universal Serial Bus), ...

  9. Android USB下的Accessory模式

    Android USB开发麻烦还是比较多的. 第一种:host模式 这种模式比较不错,由Android设备提供电源,然后与外部设备通信.举个例子来说:电脑连接USB设备,都是这个模式,非常常见的模式. ...

最新文章

  1. 京医通如何删除临时卡,解绑
  2. AI落地虽千万难,智能语音往矣 | CCF-GAIR 2020
  3. 对象序列化 输入输出流概念 InputOutStream OutputStream
  4. rpm卸载mysql和php_Linux系统中自带Mysql、Apache、Php卸载
  5. Educational Codeforces Round 44 (Rated for Div. 2)
  6. python怎么显示分数_在Python中使用分数
  7. [选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)
  8. Hibernate初学之CURD
  9. 360互联网技术训练营第七期 -“遇见”PIKA
  10. 【英语学习】【医学】Unit 06 Urine Formation
  11. 在Java中避免NullPointerException
  12. 宿华、程一笑上市演讲:上市是接受更大机遇和挑战的新起点
  13. 基于WebMatrix的轻量级Web开发系列课程
  14. 架构的腐化是必然的!
  15. Java调用存储过程返回数组
  16. C++基础——new与delete
  17. 学计算机编程有什么用,编程是什么 学习编程的好处
  18. 摄像头录像存储计算方式
  19. 梆梆加固函数抽取执行流程
  20. TikTok三大流行趋势 钛动带你看懂TikTok

热门文章

  1. JAVA毕业设计高校宿舍管理系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库
  2. 全志V3S嵌入式驱动开发(多按键输入驱动)
  3. opencv基础简洁版(python)一
  4. C# SaveFileDialog使用
  5. 计算机网络cdma编码实验,计算机网络CDMA练习题(Computer network CDMA exercises).doc...
  6. KMP算法——South Central USA 2006 蓝色牛仔裤
  7. Win11怎么隐藏磁盘分区的方法教学
  8. 基于Matlab平台的BP神经网络进行数据拟合
  9. 优化命令之sar——最牛命令
  10. 搜索引擎 梁斌的那本走进搜索引擎很不错,简明扼要