Android ueventアーキテクチャ

1112 ワード

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_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