Android ueventアーキテクチャ
1112 ワード
Androidの多くのイベントはueventとkernelを通じて非同期通信されています.クラスUEventObserverがコアです.UEventObserverはkernelのuevent情報の抽象クラスを受信する.
1、server層コード1)battery server:
2、java層コード
3、JNI層コード
4、下位コード
イヤホン関連コードを挿入:
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_UEBENT);原理: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