博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 下的usb框架及功能点【转】
阅读量:6000 次
发布时间:2019-06-20

本文共 2086 字,大约阅读时间需要 6 分钟。

本文转载自:

有关USB android框架的链接

http://blog.sina.com.cn/s/articlelist_1627432177_0_1.html

 

ICS4.0下Framework层的usb框架

 

Android 下的usb主要工作还是在android的framework层。主要有以下几个文件:

1.1UsbDeviceManager.java/高

主要完成功能切换及状态的更新,需要向外广播状态,接收kernel发送过来的event信息。实质性的工作都在这里边完成。

重要等级:高

 

1.2 UsbManager.java /usbService.java/中

这两个主要是接口,因为usb的工作本身就应该在kernel里,framework只是简单的逻辑流程重组。Android framework中****Manager.java是给用户提供的接口。

 

 

下面这个体现了manager、service的工作方式,用户会通过usbManager的调用来完成usb功能的设置。

public int setUsbTethering(boolean enable){

UsbManager usbManager =(UsbManager)mContext.getSystemService(Context.USB_SERVICE);

………………

else {

mUsbTetherRequested = true;

usbManager.setCurrentFunction(UsbManager.USB_FUNCTION_RNDIS,false);

}

1.3UsbSettings.java

packages/apps/Settings/src/com/android/settings/deviceinfo

这个是用户在setting中,选择不同的存储类型时的,进行的界面更新及状态切换的处理流程。

1.4UsbSettingsManager.java

frameworks/base/services/java/com/android/server/usb

没有明白具体功能是干什么的,在UsbDeviceManager.java有用到一些。

发送usb device attached

1.5StorageNotification.java/高

frameworks/base/packages/SystemUI/src/com/android/systemui/usb/StorageNotification.java

主要用来处理存储设备相关动作的状态更新、通知。主要涉及两个方面:一是插入usbcabel后的状态栏更新,主要针对ums功能。二是storage状态发生改变时,会调用这个activity,如mount、unmount等。

所以入口主要有两个:onUsbMassStorageConnectionChanged和onStorageStateChanged分别处理usb连接状态的改变和storage状态的改变。

1.6UsbStorageActivity.java/高

启动u盘功能后的一些ui的处理,状态的监控等处理,做的工作不多。

1.7Usbstring.c

kernel/driver/usb/gadget/ 用来进行字符串格式的转换

1.8UsbDevice.java

/frameworks/base/core/java/android/hardware/usb

主要是usb设备的一些接口,基本上是获取的设备描述符。

1.9UsbDeviceConnection.java

/frameworks/base/core/java/android/hardware/usb

usb设备的打开,基本传输等动作,似乎是native层面的。

1.10UsbDisconnectedReceiver.java

/frameworks/base/core/java/android/hardware/usb

接收断开的信息,android.hardware.usb.action.USB_DEVICE_DETACHED

 

1.11UsbHostManager.java

处理host情况下的事件流程:

UsbDeviceAdded函数:报告有USB设备插入,通过getCurrentSettings().deviceAttached发送intent消息:UsbManager.ACTION_USB_DEVICE_ATTACHED。

对应的JNI函数com_android_server_UsbHostManager.cpp

 

其中的monitorUsbHostBus会调用usb_host_run函数(system/core/libusbhost/usbhost.c)不停的读取bus总线,读取到以后,调用注册的回调函数usb_device_added--àUsbDeviceAdded(method_usbDeviceAdded)

 

你可能感兴趣的文章
python3网络爬虫学习——基本库的使用(1)
查看>>
js数组去重(多种方法)
查看>>
python 爬取乌云所有厂商名字,url,漏洞总数 并存入数据库
查看>>
AAPT2 error: check logs for details 问题的终究修复
查看>>
AIR 配置文件(*-app.xml)说明
查看>>
第二次作业
查看>>
php脚本运行shell命令
查看>>
禁止Home键跟返回键的使用
查看>>
Unable to connect to MKS;Too many scoket connect attempts;giving up
查看>>
winfrom 进程
查看>>
boost-同步-锁的守护
查看>>
Android开发自学笔记(Android Studio)—4.5 ProgressBar及其子类
查看>>
Windows 修改个性化时间显示
查看>>
vcenter安装错误The DSN is pointing to anunspported ODBC driver...
查看>>
MYSQL数据库编程
查看>>
计算几何 --- 凸包 模板
查看>>
glance rabbit
查看>>
tkinter pyqt同时呈现两个窗口
查看>>
(比赛)C - 小Q系列故事——最佳裁判(水题)
查看>>
hdu3555 数位dp一:不含49的数
查看>>