Open Headunit Protobuf消息体系:9个.proto文件定义Android Auto通信语法

发布时间:2026/11/11 8:00:34

Open Headunit Protobuf消息体系:9个.proto文件定义Android Auto通信语法 Open Headunit Protobuf消息体系9个.proto文件定义Android Auto通信语法【免费下载链接】open-headunitHeadunit App for displaying Android Auto项目地址: https://gitcode.com/GitHub_Trending/he/open-headunitOpen Headunit 是一款开源的 Android Auto 车机接收端应用能把 Android 平板或手机变成 Android Auto 主机。它背后最容易被忽略、却决定一切的功能是 proto/ 目录下的9 个文件8 个.proto协议定义 1 个protoc生成脚本——手机和车机之间的每一条握手、每一帧导航、每一个触摸事件都用 Protobuf 消息语法精确定义。为什么是 ProtobufAndroid Auto 的手机端并不公开完整的协议文档但它的线上传输格式是 Protocol Buffers简称 Protobuf。Open Headunit 通过逆向分析用 9 个文件重建了整套通信语法跨平台同一份.proto定义可生成 Java/Kotlin 代码App 端直接序列化发送⚡体积小二进制编码比 JSON 紧凑得多适合车载实时通道可读性强每个消息字段都有编号注释里还记录了与真实手机抓包交叉验证的结果。所有文件都声明syntax proto2统一位于包com.andrerinas.openheadunit.aap.protocol.proto下编译后生成同名 Java 外层类如Control、Media、Input供 AapMessageHandler.kt 等消息处理器直接调用。9个文件全景一张表看懂分工文件角色典型消息common.proto公共错误码与车机身份MessageStatus、HeadUnitInfocontrol.proto控制平面连接生命周期服务发现、开/关通道、Pingwireless.proto无线投屏握手WPPWi-Fi 凭证、协议版本input.proto按键与触摸事件上报KeyEvent、TouchEventmedia.proto音视频流协商编码器、麦克风、视频焦点navigation.proto仪表盘导航显示下一个转弯、剩余距离playback.proto媒体播放状态歌曲元数据、播放状态sensors.proto车辆传感器数据车速、档位、油耗gen.sh用protoc批量生成 Java 类—逐个拆解每个文件定义了什么1️⃣ common.proto错误码字典任何响应消息都会带一个MessageStatuscommon.proto 第5-39行定义了从STATUS_SUCCESS到STATUS_PING_TIMEOUT等 30 余种状态码覆盖证书错误、蓝牙配对失败、内存不足等几乎所有异常场景。它还定义了HeadUnitInfo车机向手机申报品牌、车型、年份。一个有意思的细节是注释里写明——vehicle_type字段是车机声明我是摩托车的唯一途径手机端会据此决定是否使用自己的麦克风。2️⃣ control.proto连接生命周期的总指挥这是最大的文件定义了ControlMsgType枚举版本协商MESSAGE_VERSION_REQUEST→ 服务发现MESSAGE_SERVICE_DISCOVERY_*→ 开通道MESSAGE_CHANNEL_OPEN_*→ 心跳MESSAGE_PING_*→ 告别MESSAGE_BYEBYE_*。其中 ServiceDiscoveryResponse 是车机自我介绍的核心消息包含车型信息、驾驶员座位位置左舵/右舵以及每个服务的能力卡片MediaSinkService车机能解码的音视频配置分辨率从 800x480 到 4K支持 H.264、HEVC、VP9、AV1 等编码类型InputSourceService支持哪些按键、触摸屏尺寸BluetoothService/PhoneStatusService/WifiProjectionService等。3️⃣ wireless.proto无线连接前的蓝牙暗号投屏开始前手机和车机先通过蓝牙RFCOMM完成 WPPWiFi Projection Protocol握手wireless.proto定义了 11 类消息WifiStartRequestType 1车机告知手机投屏会话的地址和端口WifiInfoRequest/ResponseType 2/3手机索取并收到 Wi-Fi SSID 和密码WifiVersionRequest/ResponseType 4/5双方交换协议版本与车机身份WifiConnectStatusType 6手机回报我连上你的网络了失败时还附错误提示。文件头部的注释值得细读作者说明每个字段都与参考实现和真实抓包交叉核对过甚至记录了手机实际回 -8 而非预期值这类抓包细节——这是逆向工程文档化的典范。4️⃣ input.proto你的每一次触摸车机触摸屏的每个动作都被打包成InputReport消息上报TouchEvent按下/抬起/移动/多点触摸、KeyEvent物理按键、AbsoluteEvent与RelativeEvent摇杆等相对/绝对位移以及按键绑定请求。手机端正是靠这套语法知道你在车机上点了哪里。5️⃣ media.proto音视频流的合同media.proto 定义了MEDIA_MESSAGE_START/STOP/SETUP等控制帧以及MediaCodecType枚举PCM、AAC、H.264、VP9、AV1、H.265。AudioConfiguration约定采样率、位深、声道数VideoFocusRequestNotification处理手机切回原生界面时的画面焦点移交MicrophoneRequest甚至细化到回声消除EC与降噪ANC开关。投屏成功后车机会用这张测试图校验视频渲染通道6️⃣ navigation.proto让仪表盘学会导航MsgType定义了INSTRUMENT_CLUSTER_*系列消息开始/停止导航、下一转向详情左拐、环岛、上下匝道共 20 余种NextEvent、转弯距离与时间含米/英里/码等单位。手机端据此在方向盘后的仪表屏上显示转向图标。7️⃣ playback.proto 与 8️⃣ sensors.proto状态回传playback.protoMediaMetaData携带歌名、歌手、专辑封面MediaPlaybackStatus报告播放/暂停/随机模式车机媒体卡片由此更新sensors.protoSensorBatch是一个数据篮可批量装定位、车速、转速、油耗、档位含 P/R/N/D、GPS 卫星数等 21 种传感器注释还诚实标注了哪些传感器已可用/尚未支持。9️⃣ gen.sh一行命令生成全部 Java 类gen.sh 是 9 个文件中的第 9 位它调用protoc依次编译 8 个.proto文件把 Java 类输出到../java/源码目录。这正是定义即代码——协议变更时跑一次脚本序列化/反序列化代码自动就绪。一次投屏中这些消息如何流转手机 ⇄ 车机蓝牙/Wi-Fi 通道 1. WifiVersionRequest —— 交换协议版本 2. WifiInfoResponse —— 下发 SSID 与密码 3. WifiConnectStatus —— 手机回报入网成功 4. Version/ServiceDiscovery —— 车机申报身份与服务能力 5. ChannelOpenRequest —— 按服务打开数据通道 6. 流数据导航帧、媒体帧、传感器批次…… 7. Ping / ByeBye —— 保活与优雅断开控制平面的消息类型统一由 MsgType.kt 与 Channel.kt 做分发与映射想深入某条链路的处理逻辑可以从 aap/ 目录的AapMessageHandler.kt入手。写在最后9 个文件、不到 1500 行定义构成了 Open Headunit 与 Android Auto 手机端的完整契约。对于想理解 Android Auto 协议、或为自己车机做协议扩展的开发者从 common.proto 的错误码读起、再沿 control.proto 的服务发现走一遍是成本最低的一条学习路径。【免费下载链接】open-headunitHeadunit App for displaying Android Auto项目地址: https://gitcode.com/GitHub_Trending/he/open-headunit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/11 9:55:30

安卓GSI通用镜像刷入与第三方ROM移植Bug修复指南

玩安卓玩到一定阶段,早晚会碰到那道分水岭:原厂固件用腻了,社区里的整包ROM又迟迟等不到人适配自己手里的冷门机型。这时候很多人会把目光投向GSI,也就是通用系统镜像。它的思路很直接,把system分区做成一份相对通用的…

2026/11/11 14:43:22

SQL Server 2012 安装与启动:常见问题排查与配置指南

简介:这份 PDF 是一份面向数据库初学者的 SQL Server 2012 安装与启动图文指南,解决从零搭建数据库环境和首次连接管理的常见困惑。教程实测于 Win7 企业版 64 位与 Win10 专业版 64 位,安装环节从功能勾选“全部”讲起,重点说明了…

2026/11/11 18:46:04

新疆电工证图片值不值得考?学历不高怕报不上名?真相来了!

新疆电工证图片值不值得考?学历不高怕报不上名?真相来了! 你是不是也觉得,自己学历不高,担心报名不了新疆电工证?别急,听我跟你唠唠。今天咱们就聊聊 新疆电工证图片 到底值不值得考,以及那些你可能不知道的报考避坑干货。先说重点:…

2026/11/11 18:46:04

电工证几大项目千万别踩坑,怕考不过白交培训费

电工证几大项目千万别踩坑,怕考不过白交培训费 你是不是也遇到过这样的情况:报了一个电工证培训班,花了几千块,结果考试没过,培训费打水漂? 千万别踩坑 ,这是很多学员在办理电工证过程中最容易犯的错误。今天我们就来聊聊 电工证几大项目…

2026/11/11 18:46:04

邵东劳务市场电工证通过率揭秘:别让培训费打水漂

邵东劳务市场电工证通过率揭秘:别让培训费打水漂 怕考不过白交培训费?你不是一个人。我见过太多人报名参加邵东劳务市场电工证考试,最后因为没通过,钱花了、时间搭了,还影响了项目进度。今天就来聊聊这背后的通过率真相,以及怎么才能不被坑。…

2026/11/11 18:46:04

河池电工证年审怎么网上查询?别被中介坑了

河池电工证年审怎么网上查询?别被中介坑了 你是不是也遇到过这种情况:听说要年审电工证,上网一查信息五花八门,不知道该去哪报名,生怕被中间人坑了钱还办不成?别急,今天咱们就用一个真实的案例,讲讲 河池电工证年审 到底怎么搞,还教你怎么…

2026/11/11 18:41:04

40岁能办电工证吗考前押题全攻略

40岁能办电工证吗考前押题全攻略 你是不是也担心40岁了还能不能办电工证?怕被中介忽悠,不知道去哪报名?别急,这篇文章给你讲透!不仅告诉你40岁能不能办电工证,还有考前押题怎么准备、哪里报名最靠谱,全都是实打实的干货。…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑