Android USB分析

先下一个定论,常规来讲,所有作slave的android设备都是配件,作为主机的android设备还是叫Host。此外还有usb tethering支持的radnis功能以及ncm功能,这两个是网络相关的usb应用,使用usb模拟网卡。其中radnis属于上网能力,有配套的iptables;ncm属于局域网功能,仅支持点对点通信。

配件模式

作为配件模式,需要监听广播ACTION_USB_ACCESSORY_ATTACHED和ACTION_USB_ACCESSORY_DEATTACHED,这里有一个问题。android设备目前默认是支持AOA的,但是作为配件的android设备在插入android设备后并不会收到ACTION_USB_ACCESSORY_ATTACHED,仅仅作为Host的usb主设备可以收到。

参考代码:

AccessoryDisplay/source/src/com/android/accessorydisplay/source/SourceActivity.java

AccessoryDisplay/sink/src/com/android/accessorydisplay/sink/SinkActivity.java

Usb从设备通过监听/devices/virtual/misc/usb_accessory的uevent时间确认是否开启配件模式。

这个设计原理可以这么想,作为usb主机刚开始我仅仅知道有一个设备通过usb和我连接在一起,底层默认支持配件,但是主机上层并不知道。对于主机来讲我只知道一个usb设备和我连接了,但是具体他是什么成分我并不关心,但是用户使用的目标app往往是清楚的,所以app会引导用户开启配件模式。

总结

USB复杂的东西大多在bsp这部分,从上电到全速、高速、低速几种方式的认证以及设备树的枚举过程。对于framework而言,实现的东西比较少。

复制代码
相关推荐
跨界混迹车辆网的Android工程师13 分钟前
adb 发送广播
android
超勇的阿杰2 小时前
gulimall项目笔记:P54三级分类拖拽功能实现
android·笔记
峥嵘life3 小时前
Android 欧盟网络安全EN18031 要求对应的基本表格填写
android·安全·web安全
程序员码歌5 小时前
【零代码AI编程实战】AI灯塔导航-从0到1实现篇
android·前端·人工智能
北十南6 小时前
SODA自然美颜相机(甜盐相机国际版) v9.3.0
android·windows·数码相机
Harry技术6 小时前
Trae搭建Android项目:智能存储柜表结构设计以及实体生成
android·kotlin·trae
编程乐学7 小时前
网络资源模板--基于Android Studio 实现的通讯录App
android·android studio·移动端开发·通讯录app·安卓大作业
bytebeats8 小时前
# Android Studio Narwhal Agent 模式简介
android·android studio
吴Wu涛涛涛涛涛Tao9 小时前
Flutter 实现类似抖音/TikTok 的竖向滑动短视频播放器
android·flutter·ios
bytebeats9 小时前
Jetpack Compose 1.8 新增了 12 个新特性
android·android jetpack