Android中的USB中的UsbAccessory和UsbDevice的区别
2016-03-12 12:30
477 查看
Android中的USB中的UsbAccessory和UsbDevice的区别
【背景】之前折腾android中的USB相关的东西。
遇到两个东西:
UsbAccessory和UsbDevice
但是,不是完全明白其中区别。
所以去找找区别。
【解决过程】
1.看了:
android.hardware.usb
| Android Developers
的解释,有点概念了:
UsbAccessory:一种外部硬件模块,该硬件模块,和Android设备通过USB进行通讯
UsbDevice:首先是要Android作为Host,然后外部连接一个USB的Device设备。
2.又看到:
USB
Hardware features
中的:
|
usb.host:很明显,Android设备是Host。外接的是Device。
usb.accessory:Android设备是Device,外挂到USB的Host端,比如PC。
但是还是对于UsbAccessory和UsbDevice,两者的区别,不是很清楚。
因为:
不论是Accessory还是Device,在相对于Host来说,都是Device的概念。
3.看到:
A
Bright Idea: Android Open Accessories
提到了:
Android’s USB port has in the past been curiously inaccessible to programmers. Last week at Google I/O we announced the Android Open Accessory APIs for Android. These APIs allow USB accessories to connect to Android devices running Android 3.1 or Android 2.3.4 without special licensing or fees. The new “accessory mode” does not require the Android device to support USB Host mode. |
USB Accessory,是,相对于USB的Host和USB的Device之外的,独立的概念。
其允许:
即使Android设备不支持USB Host,也可以使用USB Accessory。
具体的细节是:
先说正常情况:
比如USB键盘,那么:
之前都是PC端,作为USB的Host,USB键盘插到PC上,USB键盘是USB的Device;
而如今:
对于Android,考虑到,太多的Android的设备(平板,手机)等,不支持USB的Host,在此情况下,仍希望可以外接USB设备
所以:
Android的设计中,就加入了个Accessory,
其把之前的USB的Host和Device互换了:
Android设备是USB的Device;
插入到Android设备上的USB键盘,却作为USB的Host;
此时,Android设备,对于外挂的USB的设备来说,概念上,就是所谓的附件Accessory了。
但是此处:
由于外接的USB设备,作为USB的Host,所以其要负责:
给Android设备供电,负责USB的Host的其他事情(管理USB的bus总线)
所以:
我此处给的例子,把USB键盘直接挂到Android设备中,应该是不恰当的了。
估计只有其他的,USB接口的,查到Android设备中,可以给Android设备供电(而不是Android设备给USB设备供电)
才可以的。
【总结】
至此,基本算是明白了:
UsbAccessory和UsbDevice的区别
UsbDevice:正常的,USB的Host和USB的Device架构中的USB的Device
所以,此时:Android设备是USB的Host,外接的USB设备是USB的Device
此时,Android设备作为USB的Host,要做USB Host该干的事情:
给USB外接设备供电
负责管理USB总线
UsbAccessory:和标准的USB的概念相反
USB设备是USB的Host
所以,此时USB设备,也要干其作为USB的Host的事情
USB设备,要给作为USB的Device的Android设备供电
USB设备要负责管理USB总线
而Android设备是USB的Device
此时,从概念上说,相当于把Android设备,当做Accessory附件,挂在USB设备上
相关文章推荐
- AndroidStudio开启遇到的问题
- Android自定义下拉刷新功能的ListView
- 使用Android Studio查看android系统源码
- Android 单元测试之文件配置
- Android 之内容提供程序基础
- Android开发之高级通知应用
- Android开发代码规范
- 线程浅析
- 怎么解决Android studio导入项目卡死
- Android 关于dp dip sp px dpi density解析
- Android 7.0 之 Java Lambda表达式入门
- Fragment用法
- Android库AAR
- Android Emoji表情开发。两端使同一套的图片,防止两端因为系统内置的Emoji表情不一样,而造成用户体验不一致!
- android双向滑动冲突处理及解决方案
- GitHub Top 100的Android开源库
- android TP驱动中 生产节点
- Android中很多界面的顶部都有相同类似的布局,我们怎么设置呢?
- android的ProgressBar的setProgressBarIndeterminate()
- android的照相