Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83
开发者选项中选择USB连接模式:
onPreferenceChange -> DevelopmentSettings.java 点击后响应
writeUsbConfigurationOption ->
manager.setCurrentFunction ->
setCurrentFunction -> UsbManager.java
mService.setCurrentFunction ->
setCurrentFunction -> UsbService.java
mDeviceManager.setCurrentFunctions ->
setCurrentFunctions -> UsbDeviceManager.java
mHandler.sendMessage -> //MSG_SET_CURRENT_FUNCTIONS
handleMessage ->
setEnabledFunctions ->
trySetEnabledFunctions ->
setUsbConfig ->
SystemProperties.set -> //设置属性USB_CONFIG_PROPERTY,即sys.usb.config
插上USB到PC,使用默认模式,默认模式在开机完成时设置:
handleMessage -> UsbDeviceManager.java //MSG_BOOT_COMPLETED
trySetEnabledFunctions -> //参数是getDefaultFunctions(),设置和前面流程一样,这里不赘述。
getDefaultFunctions ->
SystemProperties.get //读取USB_PERSISTENT_CONFIG_PROPERTY,即persist.sys.usb.config
persist.sys.usb.config在build.prop中配置,当前配置的是mtp,adb
不过由于系统有bug,Google将mtp默认给去掉了,详见文章
[RK3399][Android7.1] 调试笔记 — USB连接后默认是充电模式
上层对usb插拔事件的响应:
onUEvent -> UsbDeviceManager.java //usb模块注册了监听类UEventObserver,收取底层发上来的uevent时间。
mHandler.updateState ->
sendMessageDelayed -> //MSG_UPDATE_STATE
handleMessage ->
updateUsbNotification
updateAdbNotification
updateCurrentAccessory
原作者:KrisFei
|