Android(安卓)uevent架构
16lz
2022-01-09
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
更多相关文章
- Android(安卓)中各种XML文件的作用
- Android第五十二期 - 云之讯的代码混淆
- Android中的strings文件中字符串的拼接
- Android中有关Handler的使用(二)
- Android学习心得(六)——位置服务
- Android消息处理机制
- Android(安卓)调用系统Camera
- Android中不常见的监听: 鼠标划过/双击/右键
- Android(安卓)WebView 支持H5图片上传