andreknieriem/headunit-revived

GitHub: andreknieriem/headunit-revived

将Android平板或手机变成Android Auto接收端的开源应用,无需购买昂贵车机即可享受完整的车载投屏体验。

Stars: 231 | Forks: 26

# Headunit Revived Get it on Google Play Available at Amazon Appstore

Headunit Logo

Headunit Revived 是一款 Android 应用,可让您将 Android 平板电脑或手机变成 Android Auto 接收端。该项目是伟大的 Michael Reid 原版 headunit 项目的重生版本。原项目可在此处找到: https://github.com/mikereidis/headunit ## 截图 image image image ## 如何使用 **请查看 [Wiki](https://github.com/andreknieriem/headunit-revived/wiki) 获取详细文档、设置指南和故障排除!** ### 有线 USB 连接 - 通过 USB 线将您的 Android 设备(手机)连接到运行 Headunit Revived 的平板电脑。 - 确保您的手机上已安装 Android Auto。 - 如有必要,将手机设置为 Host-Mode 并选择 Android Auto - 点击 Headunit Revived 中的 USB 按钮,找到您的手机并点击右侧按钮允许连接 - 在列表中点击您的手机并等待 Android Auto 启动 ### Wireless Helper(推荐) 这是最可靠的无线连接方式。它使用我们手机上的配套应用来触发连接。 - **下载:** [Google Play 商店上的 Wireless Helper](https://play.google.com/store/apps/details?id=com.andrerinas.wirelesshelper) - **功能:** 配置极简,支持 NSD、Wi-Fi Direct 自动连接和蓝牙自动启动。 **设置:** - 在 Headunit Revived 设置中:将 **Wireless Mode** 设置为 **Helper Mode**。 - 确保两台设备处于同一网络(热点或 WiFi)。 - 在手机上打开 Wireless Helper 应用并启动服务。 - 助手将找到您的 headunit 并自动发起连接。 ### 旧版无线选项 - **Wireless Launcher:** 您仍然可以使用 Emil Borconi 制作的原版 [Wireless Launcher](https://play.google.com/store/apps/details?id=com.borconi.emil.wifilauncherforhur)。 - **手动 / 原生:** 使用 Android Auto 开发者设置中内置的原生 "Headunit Server"(在 10.x.x.x 网络上可能会失败)。 ### 通过 Intent 无线连接(高级用户) 您可以使用 Android Intent 触发无线连接尝试。这对于 **Tasker**、**MacroDroid** 等自动化工具或通过 **ADB** 非常有用。 **URI Scheme:** `headunit://connect?ip=` **ADB 命令示例:** ``` adb shell am start -a android.intent.action.VIEW -d "headunit://connect?ip=192.168.1.25" ``` ## 已知问题 - **竖屏模式下的 Google Maps:** 在某些设备上使用竖屏模式时,Google Maps 内的触摸交互(搜索、滚动)可能无法按预期工作。**修复:** 尝试在应用设置中将 **Pixel density (DPI)** 设置降低到 **200 以下**(例如 190)。这通常可以恢复全部功能。 ## 更新日志 ### v.2.0.0 - **Wi-Fi Direct (P2P) 支持:** 无需共享网络或热点即可将手机连接到 headunit。headunit 现在自动作为 P2P 对等端可见。 - **重构连接核心:** 使用新的 **CommManager** 完全重写了内部连接处理。提高了稳定性,加快了握手速度,并更好地集成了 coroutine。 - **增强全屏逻辑:** 可在“Immersive”(全部隐藏)、“Status Only”(保留导航栏)或“None”之间选择。改善了之前按键被遮挡的设备的兼容性。 - **自动优化向导:** 自动为您的特定硬件推荐最佳的 Resolution、DPI 和 Codec。 - **MediaSession 早期初始化:** 修复了音频路由问题,该问题导致手机有时会通过自己的扬声器播放声音,而不是通过 headunit。 - **GPS 速度修复:** 通过修正单位换算,为导航应用提供准确的速度报告。 - **新日志系统:** 集成了日志级别控制和文件捕获,以便于调试。 - **重要** 修复了 Android Auto 16.4 的 selfmode intent。Wireless Helper 中也已修复。请更新至 1.2.0 ### v.1.15.1 - 感谢 A5H0 添加了阿拉伯语 - 添加了用于设置地图日/夜模式的新 intent - 添加了针对旧设备的新窗口标志,以彻底修复全屏问题 - 添加了新 intent,使 headunit 将应用识别为导航应用 - 添加了 LegacyOptimizer,它将直接、更快速地处理单核 CPU 的事务。应能改善 Android 4.1 - 4.4 设备的性能 - 修复了蓝牙权限 Bug - 更改了 Twilight-Calculator,以便在自动模式下更好地切换日/夜,防止屏幕过亮 - 添加了更多 mediasession 逻辑以获取音频焦点和音频路由 - 合并了连接屏幕上的重试按钮,感谢 @andrecuellar - 合并了 USB 自动连接功能,感谢 @andrecuellar ### v.1.14.3 - **自动化:** 添加了应用快捷方式,以支持 Samsung Modes & Routines。 - **导航:** 正式注册为导航提供程序(兼容 NAV 按钮)。 - **稳定性:** 通过改进内部数据处理和内存管理,修复了罕见的应用冻结问题。 - **兼容性:** 改善了对 Amazon Fire Tablets 和无 GPS 设备的硬件支持。 ### v.1.14.2 - 错误修复:通知和退出按钮不会关闭应用 - 改进:移除了旧的传统隐形蓝牙设置,以防止蓝牙一直处于启动状态 ### v.1.14.1 - 改进:将 USB 自动连接集成到“Auto-Connect Last Session”中。应用现在的行为类似于原生 headunit,在启动或插入 USB 时自动连接。 - 新功能:添加了 USB 软重置逻辑。无需重新插拔线缆即可从 USB“停滞”状态自动恢复。 - 重大改进:音频焦点和路由大修。添加了 `MediaSession` 支持和对手机的即时焦点响应。修复了平板电脑上的后台应用阻断 Android Auto 音频的问题。 - 改进:稳健的任务切换。通过 Home 键离开应用或点击 Launcher 图标不再中断连接。音乐在后台继续播放,点击图标/通知可正确返回投影。 - 新功能:增强的按键调试器("Key-Sniffer")。突出显示所有按键事件,包括特殊字符(ö, ü, ß)和专有的方向盘 intent(MTC, FYT)。 - 新功能:官方导航应用注册。HURev 现被识别为导航提供程序(`geo:`、`google.navigation:`、`android.intent.action.NAVIGATE`)。兼容硬件“NAV”按钮。 - 错误修复:移除了冗余的“Already connected”和“Reconnection required”警报,以获得更流畅的用户体验。 - 本地化:所有新字符串已翻译成 10 种语言。 ### v.1.14.0 - 添加了独立的音量设置 #91 - 添加了蓝牙自动启动选项 - 合并 PR #134 - 修复 Mediathek Headunits 上的连接问题 - 合并 PR #131 - 修复 Android 6 以下设备上的 SystemUI 问题 - 合并 PR #127 - 修复音频截断问题 ### v.1.13.3 - 修复了 Android 4 上的屏幕问题,包括标题栏和导航栏 #114 - 修复了夜间模式 Bug #116 - 合并了几个 PR,通过新的语言选择器改进了语言处理。感谢 @andrecuellar ### v.1.13.2 - 修复了 Android 5 Lollipop 之前设备的边距功能 - 修复警告 - 修复混合 daynight 值导致的颜色错误 - 修复了一个 Bug,即大约 20 分钟后消息大小超出预期并导致连接关闭 ### v.1.13.1 - 修复了带有 Scrollview 的 Custom Insets 对话框 - 修复了 Play Console 中列出的 4 个应用崩溃问题 - 修复了 Play Console 中关于 edge-to-edge 显示的 2 个警告 - 修复了 ssl 读/写中的竞态条件 - 防止在 ssl 传输中仅有一个数据包损坏/损坏时断开连接 ### v.1.13.0 - 改进:USB 稳定性大修(实现了 16KB 内部缓冲区) - 新功能:带有实时预览的 Custom Insets(Margins)设置 - 修复:部分 AI-Box 上的视频解码器黑屏(H.264 NAL padding) - 修复:设置中的 UI 焦点问题导致系统栏重新出现 - 修复:重新连接期间的 Native SIGABRT 崩溃 - 清理了调试设置 ### v.1.12.0 - 重大改进:无线连接大修(Socket 复用,更好的握手) - 新功能:无线模式开关(手动、自动扫描、Wireless Helper 支持) - 添加:支持 Wireless Helper 配套应用 - 修复:原生库的 Android 15(16KB page size)兼容性 ### v.1.11.1 - 改进:现在同时检查 1440p 和 h265。有些旧设备拥有超过 1080p 的分辨率但不支持 h265,导致 Android Auto 崩溃并出现 Error 11 - 修复了 Kitkat 设备搜索无线设备时的 Bug - 合并 PR #94 - 修复了模糊的图标。感谢 @nicoruy - 合并 PR #95 - 将设置设为独立视图以便直接应用。感谢 @nicoruy ### v.1.11.0 - 新功能:高级夜间模式(光线传感器、屏幕亮度、独立阈值、手动时间) - 改进:修复音频卡顿(优化了 ACK 处理) - 改进:USB 重新连接稳定性(为卡住的会话添加了“Reconnection Required”对话框) - 改进:WiFi 发现(添加了多接口扫描和 NSD/mDNS 支持) - 新功能:增强的服务通知(减少了干扰,添加了退出按钮) - 添加:西班牙语翻译 🇪🇸 感谢 @andrecuellar - 添加:乌克兰语翻译 🇺🇦 感谢 welshi32 - 错误修复:非全屏视图被拉伸,触摸可能有偏差 - 错误修复:带有 Headunit Server 的 Wifi 现在可以使用热点 ### v.1.10.4 - 添加:荷兰语翻译 🇳🇱 感谢 safariking - 多项黑屏和连接错误改进 - 错误修复:如果未作为前台服务启动,后台会崩溃 ### v.1.10.3 - 错误修复:强制软件解码器并不总是能获取到 sw 解码器 - 添加:俄语翻译 🇷🇺 感谢 @prostozema - 增强:修复了视频解码器中的小问题,这应有助于低配置设备正确渲染(但可能速度稍慢) ### v.1.10.2 - 错误修复 - 忽略了按钮映射 #71 - 新功能:屏幕方向功能,可锁定到特定方向(横向/纵向)#69 感谢 @JanRi3D - 增强:SSL 现在将尝试多次,而不是立即中断,感谢 @MicaelJarniac - 添加:中文(繁体)翻译 🇹🇼 感谢 @GazCore - 添加:捷克语翻译 🇨🇿 感谢 @teodortomas #75 - 修复了巴西葡萄牙语文件夹名称 ### v.1.10.1 - 错误修复:添加了缺失的 3 字节起始码,该问题阻止某些设备启动投影 - 添加 PR #68 - 修复 Wifi Direct 检测,感谢 @rakshan-kumr - 添加 PR #67 - 巴西葡萄牙语翻译 🇧🇷 感谢 @MicaelJarniac - 添加 PR #66 - 添加 conscrypt 以修复较低 Android 版本上的 error 7 🚀,感谢 @JanRi3D - 如果 PR #66 表现良好,旧的 jni 文件和 c 代码也许可以移除。这样我们就可以摆脱它们了 :) ### v.1.10.0 - 新功能:竖屏模式支持(仪表板和投影)具有智能分辨率缩放。已知 Bug 是地图对触摸无响应。这在所有 HU 应用中都存在 - 新功能:重新设计的按键映射屏幕(配置更简单) - 新功能:右侧驾驶设置 (#63) - 新功能:自动连接上次会话(感谢 @JanRi3D)(#21) - 新功能:如果在设置中启用,则自动进入 Selfmode - 新功能:允许侧载应用 (#57) - 本地化:添加了德语翻译 🇩🇪 非常感谢其他翻译 - 改进:TextureView现在是默认渲染器(对大多数设备兼容性更好) - 改进:修复了仪表板布局旋转 - 重写:完全重写了视频解码器,因为它之前无法调试。移除了异步模式等 ### v.1.9.0 - 新功能:GLES20 视频渲染器(修复了旧 Head Units 上的黑屏/伪影/缩放问题) - 新功能:应用内日志导出(保存到文件/分享)以便于调试 - 改进:修复了 Audio Sink 逻辑(始终广播系统音频)-> 修复了禁用 Audio Sink 时的黑屏问题 - 改进:针对旧设备优化了视频解码器(缓冲区大小调整、溢出处理) - 希望修复:解决了音频卡顿(缓冲区/队列逻辑恢复到稳定状态) - 修复:某些设备上的视频碎片化(支持分帧/Offset 2 headers) - 修复:Android 5.1 上的崩溃 - 修复:Audio-Sink 禁用功能无效 - UI:一致的对话框主题(青色/圆角)和改进的列表按钮 - 兼容性:验证了对 Android 4.1+ (minSdk 16) 的支持 - 兼容性:带回原生 SSL 支持 (JNI) 以提高旧设备上的性能(在调试设置中切换) ### v.1.8.1 - 修复了全屏/非全屏布局问题(黑条、重叠) ### v.1.8.0 - 添加了 Audio Sink 设置(启用/禁用音频路由到 HU) - 添加了 AAC 音频支持设置(实验性) - 通过将缓冲逻辑恢复到 v.1.4.1 默认值修复了音频卡顿问题 - 恢复了稳健的视频解码器逻辑(SPS 解析)以修复 Mediatek 设备上的黑屏/崩溃 - 修复了导航栏和全屏过渡期间的视觉故障 - 改进了列表项 UI,具有更好的点击反馈 - 修复了 SSL 解密崩溃 ### v.1.7.0 - 添加了 WiFi 网络发现(端口扫描)及自动连接 - 添加了 Intent 支持(`headunit://connect?ip=...`)用于自动化 - 添加了带有新设置的 Wifi-Launcher 支持 - 更新了 README ### v.1.6.3 - 首次启动时添加了强制性安全免责声明 - 提高了音频稳定性并修复了卡顿问题 - 增强了带有透明系统栏的全屏稳定性 - 修复了 WiFi 断开连接同步问题(ByeBye 请求) - 一般 UI 和稳定性改进 ### v.1.6.2 - 修复了启动和全屏过渡期间严重的屏幕闪烁 - 解决了平板电脑和旧设备上的视频解码器冻结问题 - 改进了系统栏处理,以获得更稳定的投影体验 ### v.1.6.1 - 添加了包含版本信息、更新日志和许可证的“About”页面 - 添加了“Force Legacy Decoder”(同步模式)设置以修复某些设备(例如 Mediatek)上的问题 - 改进了 surface 处理以防止解码器重新配置时崩溃 - 修复了设置中的“Unsaved changes”对话框 - 更新了 UI,具有一致的后退箭头和主题 - 通过优化解码器初始化修复了某些设备上的黑屏问题 ### v.1.6.0 - 修复了 selfmode 在 WiFi 外无法工作的 Bug - 重新设计了应用,外观和感觉采用现代 Material 3 风格 - 更好的设置 - 巨大的 Android Auto 协议更新 - 在 Android Auto 中点击退出现在会关闭投影 ### v.1.5.0 - 完全重写了视频解码器以获得更好的视频性能 - 使用最新的可用编解码器(例如 h265)更新了 Android Auto 协议 - 添加了 1440p 视频选项(注意这仅适用于 h265!) - 添加了 FPS 设置 - 添加了编解码器设置 - 添加了强制使用软件解码器设置 - 合并了 Android Native SSL 库并移除了旧的 jni 文件 ### v.1.4.1 - 修复了高分辨率设备的触摸事件 - 移除了文件日志,仅在开启调试时启用日志记录 ### v.1.4.0 - 添加了 Selfmode - 更好的应用关闭 ### v.1.3.0 - 更改了设置布局外观和感觉 - 添加了 DPI 选项 - 添加了全屏选项 - 修复了按键映射更改和按钮识别 ### v.1.2.1 - 分辨率增强 - 仅对分辨率进行了小幅改进。在我看来还不够完美,但比以前好 - 这是今年的最后一个版本。祝大家节日快乐,新年快乐 ### v.1.2.0 - 错误修复版本 - 为应用添加了退出按钮 - 恢复了分辨率设置,以更好地兼容不同的屏幕尺寸 - 添加了选择使用哪种纹理的选项。有些设备在 SurfaceView 上表现更好,有些在 TextureView 上 - 修复了按键映射 - 修复了许多颜色问题 - 修复了应用在某些设备上启动时崩溃的 Bug - 修复了宽屏上的布局 - 一些重写和小错误修复 ### v1.1.0 - 新设计 - 将基本设计更改为现代外观和更大的按钮 - 希望通过音频线程和一些日志修复了音频卡顿 - 移除了一些弃用功能 ### v1.0.0 - Initial Revived Release - 将依赖项更新到最新版本。 - 提高了对较新 Android 版本的兼容性。 - 添加了多点触控支持 - 某种程度上的无线支持,通过手机上的 Headunit-Server ## 贡献 创建 release apk 需要 keystore 文件。您可以使用以下命令在根文件夹中创建自己的 keystore 文件: `keytool -genkey -v -keystore headunit-release-key.jks -alias headunit-revived -keyalg RSA -keysize 2048 -validity 10000` 之后,您需要根据您的操作系统设置环境变量: MAC: 打开 ~/.zshrc 或 ~/.bashrc `sudo nano ~/.zshrc or sudo nano ~/.bashrc` `export HEADUNIT_KEYSTORE_PASSWORD="YOUR_KEYSTORE_PASSWORD" export HEADUNIT_KEY_PASSWORD="YOUR_KEY_PASSWORD"` ## 原版 Headunit Headunit for Android Auto (tm) 无需新车或 600 美元以上的 headunit 即可享受 Android Auto 的集成和减少干扰的环境。 此 headunit 应用可以将支持 USB Host 模式的 Android 4.1+ 平板电脑变成基本的 Android Auto 兼容 headunit。 Android, Google Play, Google Maps, Google Play Music 和 Android Auto 是 Google Inc. 的商标。
标签:Android Auto, Android开发, DNS解析, Google Play, Headunit, JS文件枚举, USB连接, 仪表盘, 多媒体, 客户端加密, 平板电脑, 开源项目, 手机投屏, 接收端, 无线连接, 智能座舱, 移动应用, 车机互联, 车载系统, 车辆娱乐系统, 驾驶辅助