Android P Car 空调功能分析

1.Android系统启动流程

Android系统启动流程

上图中ActivityManagerService、SystemUI、Launcher流程都是在SystemServer中启动的,代码路径(platform/frameworks/base/services/java/com/android/server/SystemServer.java)

2.Car Service基本分析(官方文档:https://source.android.google.cn/devices/automotive?hl=zh-cn)

2.1Car系统中专有的app和服务,在(platform/packages/services/Car/car_product/build/car.mk)中定义

Car系统专有service和App

编好的app在系统中的安装路径:

app在系统中的路径
app在系统中的路径

3.空调应用分析

空调界面启动按键
空调界面

3.1应用分析

3.1.1入口寻找

从上图可以看出,空调界面的启动入口在SystemUI中,我们到SystemUI的res中寻找

空调界面启动图标


空调启动图标

根据car_ic_hvac找到应用这个图标的引用


空调图标的引用

找到这个布局xml引用的地方

控制空气页面

稍加分析,我们可以看出空调界面的启动是通过Intent;action=android.car.intent.action.TOGGLE_HVAC_CONTROLS的广播发送

在通过搜索可以看出,这个广播被(platform/packages/apps/Car/Hvac/src/com/android/car/hvac/HvacUiService.java)接收

空调界面启动广播

在platform/packages/apps/Car/Hvac应用中的HvacPanelController.java控制,界面是hvac_panel.xml

3.1.2分析乘客侧空调温度的调整过程

Android studio debug空调应用第一步
第二步
模拟器点击乘客侧空调+
在Android studio中打出如下log

经过分析,如下为调用service层的位置

platform/packages/apps/Car/Hvac/src/com/android/car/hvac/HvacController.java

继续走

platform/packages/services/Car/car-lib/src/android/car/hardware/hvac/CarHvacManager.java


platform/packages/services/Car/car-lib/src/android/car/hardware/property/CarPropertyManager.java


platform/packages/services/Car/service/src/com/android/car/CarPropertyService.java

CarPropertyService实现了ICarProperty.Stub,实现了跨进程的调用

把platform/device/generic/car/common/car.mk中的android.car.hvac.demo改成false,要不会走入LocalHvacPropertyService

重新make编译

debug com.android.car进程

增加com.android.car进程debug最后


在此后会进入到hal层

3.1.3 HAL层目录

platform/hardware/interfaces/automotive/vehicle/

你可能感兴趣的:(Android P Car 空调功能分析)