概述
Android Automative OS理解为Android OS + Android Automative Service,而CarService就是提供汽车相关功能的最主要模块。
- CarService与Android OS的关系:CarService运行于独立的进程中,其作为原有Android服务的补充,在汽车设备上运行。CarService在整体车载通信中起到承上启下的作用。
用户会通过显示在屏幕上App,将对车辆的操作信息通过Car API 传递给Framework Service,Service再通过HIDL/AIDL将信息处理后传递给HAL Service,HAL Service再将数据处理后传递给MCU,MCU通过CAN bus将信息传递给汽车上的各个ECU,然后由ECU对汽车的机械零部件进行控制,这样就完成了一次从Android APP到车辆机械零部件间的通信。
HIDL是一种类似于AIDL的跨进程通信手段,主要应用于HAL层程序的跨进程通信。Google在Android 8中引入并在Android 10中废弃,Android 10 以后逐渐被AIDL取代。
- CarService 源码位置:/packages/services/Car/service/
packages/services/Car/car-lib/src/android/car/ICar.aidl
packages/services/Car/service/src/com/android/car/ICarImpl.java
packages/services/Car/service/src/com/android/car/CarServiceBase.java
packages/services/Car/service/src/com/android/car/CarServiceUtils.java
packages/services/Car/service/src/com/android/car/CarServiceImpl.java
packages/services/Car/service-builtin/src/com/android/car/CarService.java
frameworks/opt/car/services/builtInServices/src/com/android/internal/car/CarServiceHelperService .java
CarService组成
作为 Android Automotive 的核心进程,原生的CarService
业务量非常庞大,包含了许多与汽车相关的服务。所有应用都需要通过 CarService 来查询、控制整车的状态。例如:车辆的速度、档位、点火状态等等,CarService有许多子服务,负责具体功能。
No | 类别 | Service名 | 描述 | 客户端 | 备注 |
---|---|---|---|---|---|
1 | admin | CarDevicePolicyService | 汽车设备策略服务 | CarDevicePolicyManager | AAOS 12添加 |
2 | am | CarActivityService | 汽车Activity服务 | CarActivityManager | AAOS 13添加 |
3 | FixedActivityService | 监控显示器顶部的Activity,并确保在固定模式下的Activity在崩溃或因任何原因进入后台时重新启动。 | AAOS 13添加 此组件还监视目标包的更新,并在更新完成后重新启动它。 | ||
4 | audio | CarAudioService | 汽车音频服务 | CarAudioManager | AAOS 7添加 |
5 | bluetooth | CarBluetoothService | 汽车蓝牙服务 | CarBluetoothManager | AAOS 8添加 |
6 | cluster | ClusterHomeService | 仪表Home服务 | ClusterHomeManager | AAOS 12添加 |
7 | ClusterNavigationService | 仪表导航服务 |