android-automotive

  1. Android Automotive OS 源代码结构与核心接口总结
    1. 源码结构层次
      1. 系统应用层
      2. 系统框架层
      3. 硬件抽象层(HAL)
    2. 核心接口与功能
      1. CAR API

Android Automotive OS 源代码结构与核心接口总结

源码结构层次

系统应用层

  • 路径: packages/apps/Car
  • 内容: 预装的车载应用(如:SystemUi/Launcher/车辆设置等),替代传统手机应用模块
  • 示例:
    CarSettings-车辆设置
    CarLauncher-车载桌面

系统框架层

  • 路径: packages/services/Car
  • CarService: /platform/packages/services/Car/service/src/com/android/car/
    • 包含: CarInputService/CarPowerManagementService等,负责车辆状态管理与控制
  • Car API: packages/services/Car/car-lib/
    • 提供车载应用与 CarService 通信的接口,如: CarSensorManager

硬件抽象层(HAL)

  • Vehicle HAL 接口定义: hardware/libhardware/include/include/hardware/vehicle.h
    • 定义车辆属性元数据(如: 数据类型/变更模式),供 OEM 实现
  • 参考实现路径: hardware/libhardware/modules/vehicle/
    • 包含基础 CAN 总线通信/传感器控制等示例代码
  • HIDL 接口: hardware/interfaces/automotive/vehicle/
    • 用于系统服务云硬件驱动的跨进程通讯

核心接口与功能

CAR API

  • 功能: 提供车载应用访问车辆数据的标准化接口(如传感器数据、媒体控制)
  • 关键接口:
    •CarSensorManager:获取车钠传感器信息(如车速、温度)68。
    •CarMediaManager:控制车载媒体播放47。
    •代码路径:packages/services/Car/car-1ib/src/android/car/58。
    2.CarService子服务
    •核心子服务:
    •CarInputService:处理车载物理按键/触摸事件47。
    •CarPowerManagementService:管理车辆电源状态(如休眠唤醒)47。
    •CarProjectionService:支持手机投屏功能57。
    • thia: packages/services/Car/service/src/com/android/car/ 7 8 .
    3.VehicleHAL接口
    •关键属性:
    •VEHICLE_PROPERTY_INFO_VIN:车辆识别码。
    •VEHICLE_PROPERTYPERF_VEHICLE_SPEED:实时车速
  • VehicleHAL接口
    •关键属性:
    •VEHICLE_PROPERTY_INFO_VIN:车辆识别码。
    •VEHICLE_PROPERTY_PERF_VEHICLE_SPEED:实时车速68。
    •接口示例:
    Copy Code
    1//发送车速信号到CAN总线(参考实现)
    2 CanIf_Transmit (CAN_CHANNEL_1, &speed _data); // :ml-citation{ref=”3,8” d
    4.HIDL接口
    •作用:标准化硬件驱动与上层服务的通信协议。
    •示例接口:IVehicle.hal
    定义车辆属性读写方法(如get()、set())
  • 三、源码目录概览
    |- 层级 -|-核心目录/文件 -|- 说明 -|
    | 应用层 | packages/apps/Car/ |车载系统应用源码(如CarLauncher)|
    | 框架层 | packages/services/Car/ | CarService及Car API实现 |
    | HAL层 | hardware/libhardware/include/hardware/vehicle.h | 车辆HAL接口定义 |
    | HIDL接口 | hardware/interfaces/automotive/vehicle | 硬件抽象接口实现 |
    一、源码整体结构
    车载Android系统基于AOSP(Android Open Source Project),主要新增了与汽车相关的模块,代码路径集中在以下目录:
  1. 系统应用层
    /packages/apps/Car/
    包含车载专用系统应用(如收音机、空调控制、仪表盘等)

/packages/services/Car/
核心服务模块(CarService)及相关工具

/packages/apps/car/systemui/
车载SystemUI扩展,如状态栏、导航栏定制

  1. 核心服务层
    CarService:位于
    /packages/services/Car/service/
    ,是车载系统的核心服务,包含电源管理、传感器、音频控制等子服务。

Vehicle HAL:硬件抽象层接口,定义于
/hardware/interfaces/automotive/vehicle/
,由厂商实现具体逻辑。

  1. 框架层扩展
    Car API:位于
    /packages/services/Car/car-lib/
    ,为车载应用提供专用接口(如空调控制、车辆诊断等)。

二、核心接口及代码路径

  1. CarService(核心服务)
    源码路径:
    /packages/services/Car/service/src/com/android/car/

核心子服务:
CarPowerManagementService:电源管理(熄火、休眠等)。

CarAudioService:音频路由控制(多声道、音效调节)。

CarInputService:处理车辆物理按键及触控事件。

CarDiagnosticService:车辆诊断数据(如OBD-II)的采集与上报。

  1. Car API(应用开发接口)
    源码路径:
    /packages/services/Car/car-lib/src/android/car/

关键接口:
CarSensorManager:获取车辆传感器数据(如车速、胎压)。

CarHvacManager:控制空调温度、风量及出风模式。

CarProjectionManager:支持手机投屏(如Android Auto)。

VmsSubscriberManager:车辆地图服务订阅与管理。

  1. Vehicle HAL(硬件抽象层)
    接口定义:
    /hardware/interfaces/automotive/vehicle/2.0/

核心功能:
通过HIDL(Hardware Interface Definition Language)定义车辆属性(如门窗状态、座椅调节)。

厂商需实现IVehicle.hal接口,并通过VehicleHalManager与CarService通信。

  1. SystemUI扩展(车载定制)
    源码路径:
    /packages/apps/car/systemui/

核心模块:
CarStatusBar:定制化状态栏(显示车辆信号、电池状态)。

CarNavigationBar:导航栏/Dock栏(集成车控快捷入口)。

插件化支持:通过SystemUI Plugin`机制动态扩展功能(如自定义通知栏)。

  1. 系统启动与初始化
    CarService启动:由SystemServer在系统启动时加载,通过ICarImpl初始化所有子服务。

SystemUI启动:作为独立进程由SystemServer启动,初始化时序依赖CarSystemUIFactory。

三、开发实践建议

  1. 定制化开发
    修改CarService子服务逻辑时,优先通过Car API封装接口,避免直接操作HAL层。
    使用SystemUI Plugin机制扩展UI功能,减少对主框架的侵入。

  2. 调试技巧
    通过adb shell dumpsys car_service查看CarService实时状态。

使用VehicleHal模拟工具(位于/packages/services/Car/tools/emulator/)测试车辆信号。

车载Android系统(AndroidAutomotiveOS)源码结构与核心接口总

一、源码结构概览 AndroidAutomotiveOs(AAOS)基于AOSP扩展,核心模块围绕车载功能设
计,主要分为以下层次:
1.CarAPI层 代码路径:/packages/services/Car/car-1ib/src/android/car/ 提供面向车载应用的Java接口,如车辆属性(速度、温度)、HVAC控制、
座椅调节等25。
关键接口包:
android.car.hardware(车辆硬件控制)
android.car.media(车载音频管理)
android.car.navigation(导航服务)
2. Car Servicela
代码路径:packages/services/Car/service/ 核心服务包括:CarPropertyService(属性管理)、CarAudioservice(音频
控制)、CarHvacManager(空调控制)等。
服务初始化代码位于:src/com/android/car/ICarImpl.java。
3. Vehicle HALFE
代码路径:hardware/interfaces/automotive/vehicle/2.0/ 定义车辆属性元数据(如PERF_VEHICLE_SPEED)和硬件抽象接口,支持属性
订阅、事件上报。
数据访问安全分级:通过权限控制(系统级/应用级)和
VehicleNetworkService实现安全访问。
4.扩展视图系统(EVS) 代码路径:hardware/interfaces/automotive/evs/1.@/
支持多摄像头输入和显示管理,用于倒车影像、环视等功能2。
二、核心接口与代码路径
1.车辆属性控制接口 接口类:carPropertyManager(路径:android.car.hardware.property) 功能:获取/设置车辆属性(如速度、温度、车窗状态),支持异步订阅属
性变化25。
示例属性:
Java
VehicleProperty.PERF_VEHICLE_SPEED//车速(米/秘)
VehicleProperty.HVAC_TEMPERATURE_SET//空;還度龄些
2.HVAC控制接口 接口类:carHvacManager(路径:android.car.hardware)
功能:调节空调温度、风量、循环模式,需系统级权限③⑤。
代码示例:
Java
白复制 CarHvacManager.setFloatProperty(CarHvacManager.ID_ZONED_TEMP_SET,
zone, temp);
3.音频管理接口 接口类:CarAudioManager(路径:android.car.media)
功能:管理多区域音频输出(如主驾、后排独立音区)27。
4.导航与地图接口 接口类:CarNavigationstatusManager(路径:android.car.navigation)
功能:提供导航状态(如转向提示、剩余距离)和地图注点功能⑥7。
三、扩展模块与开发要点
1.系统应用开发 SystemUI定制:位于frameworks/base/packages/SystemUI/,需修改状态栏
(Dock栏)、通知栏等车载UI组件4。 权限控制:车载敏感接口(如HVAC)需声明CAR_CONTROL权限,仅系统应用
可调用⑤9。
2.HAL层打展
OEM自定义属性:在VehicleHAL中扩展VENDOR_前缀属性,需同步修改
CarService和API层29。
3.调试工具
ADB命令:通过adbshelldumpsyscar_service查看CarService状态
4. OEM定制‌:OEM需基于Vehicle HAL实现具体车型的硬件驱动,并通过CarService扩展定制功能(如空调控制)‌

‌应用开发‌:第三方应用通过Car API访问车辆数据,无需直接调用HAL层接口‌

https://source.android.com/docs/automotive


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 nathanwriting@126.com

文章标题:android-automotive

字数:2k

本文作者:Nathaniel

发布时间:2025-04-13, 20:27:10

最后更新:2025-04-26, 19:33:12

原始链接:http://example.com/2025/04/13/android-automotive/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

×

喜欢就点赞,疼爱就打赏