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  

更多相关文章

  1. Android第五十二期 - 云之讯的代码混淆
  2. Android 使用自定义注解代替重复写findViewById代码
  3. Android代码风格指导
  4. android基础-界面代码
  5. Android 消息处理机制
  6. 整理出15个Android很有用的代码片段
  7. 转:Android 对话框【Dialog】去除白色边框代码

随机推荐

  1. Android(安卓)add prebuilt lib(*.so) to
  2. Android中的消息机制
  3. android之sqliteDatabase,sqliteOpenHelp
  4. Google Android操作系统内核编译图文教程
  5. 那些你不知道的Android小事儿
  6. Android读写XML(中)——SAX
  7. unable to access android sdk add-on li
  8. android 智能指针
  9. android:layout_alignleft layout_tolefto
  10. TV - 新的战场