基于android 8 分析
以BatteryService里調(diào)用IBatteryPropertiesRegistrar為例
IBinder b = ServiceManager.getService("batteryproperties");
? ? ? ? final IBatteryPropertiesRegistrar batteryPropertiesRegistrar =
? ? ? ? ? ? ? ? IBatteryPropertiesRegistrar.Stub.asInterface(b);
batteryPropertiesRegistrar.registerListener(new BatteryListener());
1.BatteryService.java位于
android\frameworks\base\services\core\java\com\android\server
2. IBatteryPropertiesRegistrar 的定義
android\frameworks\native\services\batteryservice
實(shí)現(xiàn)在
android\system\core\healthd\BatteryPropertiesRegistrar.cpp
3. java和cpp層的定義需要對(duì)應(yīng)
java層編譯
frameworks/base/Android.mk:254: core/java/android/os/IBatteryPropertiesRegistrar.aidl
java 傳遞的參數(shù)如 BatteryProperty和 BatteryProperties 實(shí)現(xiàn)Parcelable接口
PS:Camera2的接口也是java調(diào)用cpp層的binder,實(shí)現(xiàn)在
\LA.UM.6.6\LINUX\android\frameworks\base\core\java\android\hardware\camera2\CameraManager.java