首页 > 其他分享 >Android 下的usb框架及功能点

Android 下的usb框架及功能点

时间:2023-02-01 09:35:11浏览次数:39  
标签:java usb 框架 UsbManager base Android android USB

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

 

标签:java,usb,框架,UsbManager,base,Android,android,USB
From: https://www.cnblogs.com/kn-zheng/p/17081450.html

相关文章

  • React框架运行机制
    React框架运行主流程1.JSX是JS语言的扩展,被babel编译后,会转换成React.creatElement(),这个方法返回的是一个虚拟DOM。2.将虚拟DOM渲染到真实DOM的方法是ReactDom.render()......
  • django框架之drf(部分讲解)
    restful规范(重要)一、概念REST全称是RepresentationalStateTransfer,中文意思是表述:表征性状态转移,它首次出现在2000年RoyFielding的博士论文中。RESTful是一种定义W......
  • Gin框架实战——HTML渲染
      最近使用Go的Gin框架做了个简单的前端网页,记录一下细节~1.加载静态文件    由于网页需要使用css、图片等渲染,而静态文件必须先声明:否则模板中调用加载不出......
  • django框架之drf:2、restful规范,序列、反序列化,drf安装及使用(django原生接口及drf接口
    Django之drf一、restful规范1、概念​ REST全称是RepresentationalStateTransfer,中文意思是表述:表征性状态转移,它首次出现在2000年RoyFielding的博士论文中。​ R......
  • Yolov4的框架理解
                                                        ......
  • 若依ruoyi-vue + 小程序uniapp + Android 环境安装
    ruoyi-vue安装跟随公众号王清江唷01系统环境JavaEE8Servlet3.0ApacheMaven302主框架SpringBoot2.2.xSpringFramework5.2.xSpringSecurity5.2.x03持久......
  • android手机调试--命令行学习--亲测OK
    https://cloud.tencent.com/developer/article/2069572以我的华为mate10为例子--亲测OK需求:关闭系统更新提醒--亲测OKhttps://blog.csdn.net/hu1010037197/article/deta......
  • Android Emulator浮动无边框
    现状在新版的AndroidStudio中,当你打开模拟器,创建虚拟安卓手机的时候,会发现模拟器总是出现在右边的一个框中,显示得很小,下面教你怎么让模拟器中的虚拟安卓手机浮动出来,或者......
  • Yolov3的大致框架理解
                                                       ......
  • Linux USB 主机控制器和设备驱动
    USB的全称是UniversalSerialBus,顾名思义:通用串行总线。提到总线,联想一下,在你心目中总线总是用来干嘛的?还记得I2C总线?I2C总线上挂有二条信号线,一条是SCL、SDA,这......