Android很多事件都是通过uevent跟kernel来异步通信的。其中类UEventObserver是核心。 UEventObserver接收kernel的uevent信息的抽象类。

1、server层代码 1)battery server:

frameworks/base/services/java/com/android/server/SystemServer.java  frameworks/base/services/java/com/android/server/BatteryService.java  

2、java层代码

frameworks/base/core/java/android/os/UEventObserver.java  

3、JNI层代码

frameworks/base/core/jni/android_os_UEventObserver.cpp  

4、底层代码

hardware/libhardware_legacy/uevent/uevent.c  

读写kernel的接口socket(PF_NETLINK, SOCK_DGRAM, NETLINK_KOBJECT_UEVENT); 原理:通过kobject_uevent的方式通知应用层,往一个socket广播一个消息。应用层打开socket监听NETLINK_KOBJECT_UEVENT组的消息,就可以收到了。

插入耳机相关的代码:

hardware/libhardware_legacy/uevent  frameworks/base/core/jni/android_os_UEventObserver.cpp  frameworks/base/core/java/android/os/UEventObserver.java  frameworks/base/services/java/com/android/server/SystemServer.java  frameworks/base/services/java/com/android/server/HeadsetObserver.java  

这个应该是最简单的,添加新的uevent事件,可以参考这个。

高通HDMI在 frameworks的修改:

http://gitorious.org/pandroid/frameworks-base/commit/651e286bb32264b650e6adaf84b91b9719043b9a/diffs

refer

Android 的用户层 uevent处理机制 http://blog.csdn.net/linphusen/archive/2010/06/12/5667647.aspx

001-Android底层分析-Android uevent 分析 http://blog.chinaunix.net/space.php?uid=24605155&do=blog&cuid=2363481

Android中的BatteryService及相关组件 http://www.mcuol.com/Tech/265/34518.htm

ANDROID中的VOLD分析 http://blog.csdn.net/datangsoc/archive/2010/10/08/5928132.aspx

Android Vold 分析(一)—system/vold/main.cpp——-mian函数分析http://blog.csdn.net/sustzombie/archive/2011/01/04/6116123.aspx

Android uevent相关推荐

  1. Android uevent进程源码分析

    在Android Init进程源码分析中讲到init进程会依次执行被加入到待执行队列action_queue中的Action,在init.rc中我们有这么一段配置: 11 on early-init1 ...

  2. android uevent机制,android Linux uevent机制

    Linux uevent机制 Uevent是内核通知android有状态变化的一种方法,比如USB线插入.拔出,电池电量变化等等.其本质是内核发送(可以通过socket)一个字符串,应用层(andro ...

  3. android uevent创建设备文件

    linux kernel启动过程中创建VFS,为各驱动设备在sys/class, sys/devices, sys/block创建目录和文件,分配kset和kobject,uevent文件, 然后发送 ...

  4. android uevent机制,安卓linux uevent内核上报机制实例

    uevent可以实现内核通知上层的一种机制,最常见的电池状态的变化就是kernel uevent通知的,每次百分比或者其他的变化通过power_supply_changed通知上层update: 每个 ...

  5. Android uevent 电池电量上报机制

    Android input epoll/inotify机制 power supply是如何上报电池信息的 Android :kernel uevent发送(热插拔)事件到用户空间 源码分析 Kerne ...

  6. android uevent原理

    system/core/init/ueventd.c 关键函数: uevent_open_socket(),创建netlink套接字 uevent_kernel_multicast_recv:监听ue ...

  7. Android之内核学习笔记

    0.Android系统启动 <Android系统启动流程 -- bootloader> <The Android boot process from power on> < ...

  8. Android内核学习笔记

    0.android系统启动 <Android系统启动流程 -- bootloader> <The Android boot process from power on> < ...

  9. Android Qcom USB Driver学习(九)

    该系列文章总目录链接与各部分简介: Android Qcom USB Driver学习(零) 高通的某些平台将电源管理移植到了ADSP Subsystem, 分析一下其中比较关心的部分 Archite ...

最新文章

  1. 实例分割最新最全面综述:从Mask R-CNN到BlendMask
  2. reddit android app,reddit安卓版app
  3. 互联网公司IT系统架构进化之路
  4. python列表不包含哪个内置函数_python 列表的推导器和内置函数
  5. 服务器中文名图片上传后 显示不,更换服务器后无法显示上传得图片
  6. 升级到 Tomcat 8 后 Cookie 可能出现的问题
  7. 【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化
  8. ROS笔记(36) 避障运动规划
  9. oracle19c配置scott创建,oracle 19c创建sample schema-HR,OE,SH等等
  10. 微信小程序——极点日历使用方法
  11. 优学院java架构52破解_2021年优学院Java程序设计(山西工程职业学院)课后习题答案...
  12. 硬件学习博客和资源汇总
  13. android 切换语言不起作用,Android 语言切换实例及踩坑
  14. 第九届蓝桥杯题解(部分)
  15. dns服务器优化 360,360超级dns解析速度提升10倍
  16. 面向开发者的网站,真的是认真设计过的吗?
  17. 小提琴机器人拉法_小提琴的弓怎么拉 有什么技巧
  18. 谷歌:科技让世界更美好
  19. 北京工程测量乙级资质申请流程
  20. 数据结构和算法——kd树

热门文章

  1. 一个简单的Makefile模板
  2. Samsung原版44B0X的Bootloader分析
  3. 远程连接server问题
  4. Python 第三方模块之 pdfkit
  5. wpf使用webbrowser时提示当前页面脚本发生错误_win7系统internet脚本错误的应对办法...
  6. Django,Ajax,Vue实现文章评论功能
  7. 字符设备驱动基础篇4——字符设备驱动读写接口的操作实践
  8. springboot创建parent_理解spring-boot-starter-parent
  9. PHP+Mysql查询上一篇和下一篇文章实例
  10. 深入理解计算机系统 第十二章 并发编程