Open Headunit HeadUnitIntent 合约模块:广播联动 Android Auto 头机的完整 API 参考

Open Headunit HeadUnitIntent 合约模块:广播联动 Android Auto 头机的完整 API 参考 Open Headunit HeadUnitIntent 合约模块广播联动 Android Auto 头机的完整 API 参考【免费下载链接】open-headunitHeadunit App for displaying Android Auto项目地址: https://gitcode.com/GitHub_Trending/he/open-headunitOpen Headunit 是一款能把 Android 平板或手机变成 Android Auto 车载头机headunit的开源 App。它的HeadUnitIntent 合约模块contract 子项目则提供了一组标准的 Intent 广播接口让你从 Tasker、MacroDroid、快捷方式甚至adb一行命令就能控制连接、断开、夜间模式、日志抓取等操作还能实时监听投屏会话状态——无需任何 UI 权限。下面这份参考带你 5 分钟看懂这个广播联动合约怎么用。合约模块是什么为什么单独拆出来合约模块位于 contract/ 目录核心是一个纯常量文件 HeadUnitIntent.kt它集中定义了HeadUnitApp 的包名常量HeadUnitCommand所有可发送的控制/配置命令 Action 及其参数SessionStateIntent会话状态变化的出站广播格式NavigationUpdateIntentAndroid Auto 导航转向更新的出站广播格式KeyIntent/MediaKeyIntent/LocationUpdateIntent按键、媒体键与定位的内部广播把它当作一份接口契约你的自动化脚本只需照抄这里的常量就能和 App 稳定通信。完整的实战示例在 contract/README.md。⚠️ 新手最常踩的坑包名 ≠ Action 前缀这是唯一静默失败的地方官方文档特别强调值包名applicationIdcom.andrerinas.headunitrevivedAction 前缀namespacecom.andrerinas.openheadunitApp 改名时保留了 Play Store 的旧包名两者故意不一致。写错任何一个都不报错只是什么都不发生——请复制而不是手打。发送控制命令一个接收者搞定一切所有命令都发往同一个广播接收者见 AutomationReceiver.ktcom.andrerinas.headunitrevived/com.andrerinas.openheadunit.automation.AutomationReceiver选广播接收者而不是 Activity的好处不需要显示在其他应用上层权限Tasker / MacroDroid 就能直接驱动 App。 控制类命令对任意调用方开放Action 前缀均为com.andrerinas.openheadunit.Action参数作用ACTION_CONNECTip可选、no_ui带ip连接 5277 端口的头机服务不带则检查 USBACTION_DISCONNECT—结束会话ACTION_START_SELF_MODEno_ui本机自投屏Self-ModeACTION_STOP_SERVICE—结束会话并停止服务ACTION_EXIT为兼容别名ACTION_SET_NIGHT_MODEstateday/night/auto切换昼夜主题ACTION_START_WIRELESS/ACTION_STOP_WIRELESS—启停已保存的无线模式ACTION_START_WIRELESS_SCAN—执行一轮设备发现ACTION_NATIVE_AA_POKEextra_mac通过蓝牙唤醒手机Native AA 模式ACTION_CHECK_USB—重新检测 USB 口ACTION_QUERY_STATE—以 JSON 返回构建与会话状态⚙️ 配置类命令需先在设置中开启允许外部配置ACTION_SET_SETTINGS/ACTION_GET_SETTINGS/ACTION_RESET_SETTINGS、ACTION_SET_LOG_LEVEL、ACTION_START_LOG_CAPTURE/ACTION_STOP_LOG_CAPTURE、ACTION_EXPORT_LOG、ACTION_LOG_MARKER。两条安全边界即使开关打开也生效导出会隐藏凭据——热点密码、SSID、蓝牙 MAC 等敏感键会被剔除回复中带withheld计数写入路径受限——只允许写入 App 外部文件目录和公共 Downloads 目录。 监听会话状态SESSION_STATE广播这是回答Android Auto 到底在车上跑起来没有的关键——设备上没有任何其他机制能报告这一点。会话每次变化时App 都会隐式广播com.andrerinas.headunitrevived.SESSION_STATE无需权限Tasker 的Intent Received事件可直接监听。Extra取值stateconnecting/connected/projecting/disconnected/failedtransportusb/wifi/self/unknownreasonuser_exit、link_lost、phone_left、handshake_failed、peer_silent、connect_failed或空uptime_ms会话存活毫秒数projecting才是Android Auto 正在屏幕上播放视频流的权威信号reason是开放字符串遇到不认识的取值当作其他原因处理即可。出于安全考虑该广播不携带任何网络凭据、也不透露手机信息。️ 导航更新广播NAVIGATION_UPDATE当 App 收到 Android Auto 的导航转向信息Google 地图、Yandex 等均可会发出NAVIGATION_UPDATE广播Extra 包括distance_meters/time_seconds距下一个转向的距离与时间road道路名action_text人类可读的转向描述turn_number/turn_angle环岛出口序号、转向角度total_distance_meters/total_time_seconds/estimated_arrival全程剩余里程、时间与 ETA该广播使用签名级权限保护接收方需在清单中声明com.andrerinas.headunitrevived.permission.NAVIGATION_UPDATE。注意其中的next_event_type与turn_side两个字段已被标记为弃用请优先使用仪表簇转向类型。 最快上手adb 三行体验PKGcom.andrerinas.headunitrevived RX$PKG/com.andrerinas.openheadunit.automation.AutomationReceiver adb shell am broadcast -n $RX -a com.andrerinas.openheadunit.ACTION_QUERY_STATEam发送的是有序广播回复会以 JSON 形式出现在data字段里。另外深链headunit://connect?ip192.168.1.25、headunit://exit、headunit://selfmode等旧方式依然可用但广播接收者方案无需额外权限官方推荐优先使用它。 参考文件清单文件说明contract/src/main/java/com/andrerinas/openheadunit/contract/HeadUnitIntent.kt全部合约常量定义命令、状态、导航广播contract/README.mdTasker / MacroDroid / adb 完整实战指南app/src/main/java/com/andrerinas/openheadunit/automation/AutomationReceiver.kt命令接收与 JSON 回复的实现app/src/main/java/com/andrerinas/openheadunit/automation/AutomationCommandPolicy.kt命令权限与外部配置开关策略照这份契约你的车机平板就不再只是被动显示而是可以被任意 App、任何自动化工作流编排的智能终端 。【免费下载链接】open-headunitHeadunit App for displaying Android Auto项目地址: https://gitcode.com/GitHub_Trending/he/open-headunit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考