DiPlay
适用于兼容比亚迪安卓车载主机的 CarPlay。支持有线和无线连接,并采用熟悉的 DiAuto 界面。安卓低版本请访问 https://www.baozangapp.com/diplay-43
软件信息
- 软件分类
- 系统工具
- 系统平台
- Android
- 当前版本
- v0.2.12
- 发布日期
- 2026-10-05
- 开发者
- shihabal3amri
- 开源协议
- GPL-3.0
- 编程语言
- Kotlin
- 首次发布
- 2026-09-24
- 累计下载
- 53 次
- 开源 Star
- 4,056
下载地址
软件介绍
支持有线USB和无线CarPlay,并带有本地身份验证。
比亚迪HUD导航系统,配备箭头、距离和街道名称显示,需使用已验证的固件。
支持车载热点、改进的音频缓冲和保存接收诊断信息。
自动地址发现、固定信道 Wi-Fi 回退和成功配置记忆。
图标/文本大小、分辨率和帧速率;应用显示更改会重新连接 CarPlay。
本地诊断报告导出。只有您选择共享报告,才会发送报告。
与 DiAuto 分开安装。一次只能运行一个投影应用程序。
本产品未经苹果认证。APK 中包含一个从公开的 Carlinkit 固件中提取的实验性配件标识,而非为 DiPlay 新配置的 MFi 标识。该 APK 中包含一个可提取的私钥。未来 iOS 更新后的兼容性、在不同车载主机上的可靠性以及该标识是否适合通用分发等问题尚未解决。此版本旨在鼓励社区测试,但不保证其普遍兼容性。
更新日志 v0.2.12
DiPlay 0.2.12 — 4 October 2026
Public preview for compatible BYD Android 9 and newer head units. This release brings together the contributions reviewed since 0.2.11: more connection choices, dashboard and wheel controls, display settings, diagnostic export, and corrections to session ownership and recovery. Download and installation help are available on the official website.
Fixes and review corrections
These include existing defects and regressions caught while integrating the new contributions.
- USB prompts: Restricted automatic confirmation to DiPlay's own system USB permission dialog, preventing unrelated dialogs from being accepted. Corrected Apple-device USB attachment/default-handler matching. (#170, #224)
- Floating maps and compact screens: Corrected retained-map aspect updates and foreground detection; preserved video proportions, touch alignment and system bars in multi-window mode. Preparation content now fits short landscape screens. (#171, #172, #181)
- Settings and authentication: Cancel restores edited settings and safe areas while preserving the connection. Local runtime files cannot silently override USB-CH341 selection, and bridge attachment cannot switch the active transport. Resume refreshes saved settings without overwriting unsaved menu edits. (#191, #194, #196)
- Appearance and resolution: Custom cluster overlays refresh when CarPlay appearance changes. Integer resolution values survive opening, saving and cancelling the menu. Corrected the 160% endpoint label and enforced actual decoder limits; unsupported enlarged requests save 100% and show a notice. (#178, #179, #230)
- Guidance cards: Unknown or expired guidance clears correctly; absent arrival/distance values remain absent. (#193)
- DiLink 4 integration: Reconciled the overlapping PRs into one route and decoder owner. Rejected stale launches/surfaces, preserved DiLink 5 priority, and added exact-state stock-map restoration with retry and ownership protection. (#187, #213)
- DiLink 3 recovery: Partial projection initialization compensates with stock mode. Failed restoration remains pending through transient ADB failures, failed preference commits and process restart, including when navigation was subsequently disabled. (#182)
- Wi-Fi scan recovery: Lost replies and failed recovery-marker writes remain recoverable. Old controller cleanup cannot undo a newer scan pause; Same LAN is excluded to preserve station connectivity. (#225)
- Wireless startup and hotspot state: Corrected Same LAN discovery/address identity; rejected unrelated hotspot interfaces; bounded startup attempts that receive no AirPlay TCP connection. Automatic hotspot fallback requires firmware-advertised commands, successful shell results and observed AP readiness, with deadline/cancellation protection and correct platform-state precedence. (#223, #229, #235)
- Wheel controls: Preserved matching press/release decisions and reset modes with their route lifecycle. Queued zoom/joystick commands cannot reach a replacement phone or obsolete stream. (#214, #231)
- Live dashboard selection: Reapplied accepted content after stream/phone replacement, distinguished requested from delivered content, and rejected stale callbacks or uncertain writes. (#232)
- Song cards and artwork: Prevented old song timers from clearing or recreating newer content. Retained artwork while its replacement is pending; confirmed failed artwork transfers clear stale images without unrelated transfers clearing valid covers. (#215, #228)
- Diagnostic export: Reports remain saveable and viewable/shareable when the document picker or Downloads provider is unavailable, with the actual fallback location shown. (#185, #219)
The complete repaired release still needs vehicle retesting. Firmware restrictions remain; force-stop can defer restoration until reopening, and general stutter, calls/Siri, startup and colour reports still need current-device evidence.
Connections and USB
Existing Wi-Fi / Same LAN (#223) connects the car and iPhone through the same external router or portable Wi-Fi. Save that network's credentials in Connection setup, keep Bluetooth enabled, and disable router client isolation. DiPlay does not create a hotspot, join a network for you, or change the head unit's default route. The implementation includes IPv4/IPv6 Bonjour and TCP handling, scoped bootstrap addresses, and cleanup when the chosen network changes. The contributor reported a clean-install test on a BYD Han DM-i with DiLink 4.0 / Android 10; this is not a guarantee for every router or vehicle. See setup and validation.
Hotspot startup recovery (#229) waits for a stable car-hotspot interface instead of accepting an unrelated Ethernet or upstream address. If wireless StartSession succeeds but the iPhone never opens its AirPlay TCP connection, a deadline ends that attempt and starts bounded retries. Cancelled or superseded sessions cannot use an old timer to retry a newer connection. The existing hotspot is not shut down as part of recovery.
Automatic hotspot compatibility (#235) improves AP-state detection when Android hides reflection APIs and adds a fallback through already-authorized local ADB on firmware that exposes a supported command for starting its saved hotspot. Readiness must be observed; a command invocation alone is not success. This does not enable ADB, change hotspot credentials, bypass approval, or establish support on every DiLink/Android version. The feature remains optional and off by default. Its final implementation and tests are described in the PR.
USB handling (#170, #224) updates the Apple-device attach filter and adds optional accessibility assistance for DiPlay's system USB permission dialog. Automatic confirmation is narrowly matched to the system USB prompt and DiPlay's identity; generic dialogs and other applications are excluded. Normal Android USB authorization remains in place.
Wi-Fi scan pause (#225) targets one contributor-observed source of DiLink 3 wireless stutter: periodic station scans sharing the CarPlay radio. On Android 10, already-authorized local ADB can pause connectivity scans during eligible hotspot/Wi-Fi Direct sessions. Same LAN is excluded because it needs normal station connectivity. One serial worker and controller leases coordinate ownership; a durable marker is committed before disabling scans. Failed restoration is retained and retried, including when DiPlay reopens. Automatic joining of saved Wi-Fi networks is unavailable while scans are paused. The repaired in-app lifecycle still needs a vehicle retest; this is not a universal stutter fix.
Display, appearance and in-session settings
Multi-window and compact layouts (#172, #181) improve split-screen and launcher-card use, with preparation content that fits short landscape screens. Video aspect ratio and touch alignment are preserved. Resolution adaptation is optional, and system bars return appropriately in multi-window mode. No generic picture-in-picture launcher is promised.
System bars and authentication settings (#191, #194) provide independent status-bar and navigation-bar visibility. The configured two-, three- or four-finger swipe opens the in-session menu. Cancel restores previewed settings and keeps the connection; saving connection-level changes reconnects. Authentication selection supports the configured Local or USB-CH341 path without silently overriding CH341 because local runtime files exist, or changing an active transport merely because a bridge was attached.
CarPlay appearance (#178) offers system, ambient-light, fixed-day and fixed-night modes, with sensor threshold/delay controls and fallback when the sensor is unavailable. Custom cluster overlays refresh their appearance with CarPlay. Android's app theme remains a separate setting; the iPhone's own appearance rules can still influence its picture.
Custom resolution (#179, #230) accepts integer percentages from 30% to 160%. The settings dialog, persistence and in-session slider share the same limits, and the slider correctly labels its 160% (1.6×) endpoint. Enlarged requests are checked against the actual negotiated canvas and decoder capabilities; unsupported requests reset the saved resolution to 100% with a notice rather than bypassing the checks. Legacy saved values remain compatible, and cluster-map scale is a separate setting. Above 100%, encoding, decoding and scaling cost more work; 160% is a ceiling, not a recommended default. Whether a larger request improves sharpness depends on the car and iPhone.
Live picture adjustments (#211) add brightness, contrast, saturation and warmth for the main CarPlay video, with comparison to the original and a neutral reset. They do not alter the cluster stream or claim to fix the underlying cause of intermittent colour problems.
Resume synchronization (#196) refreshes connection settings when the projection screen resumes, so changes made outside that screen are not lost to its old settings snapshot.
Dashboard maps, guidance and recovery
Virtual map cards (#171) provide a 16:9 virtual cluster stream for compatible floating-map and launcher use when there is no physical cluster display. Physical display routes retain priority. Mirror geometry updates when the stream changes, and automatic overlay hiding uses recognized home screens and Usage Access rather than broad launcher-name matching.
DiLink 4 routing (#213, #187) adds an opt-in local-ADB Activity route for the verified XDJA 1920×720 cluster display, with calibration, native handoff and existing custom turn cards. The two overlapping PRs were reconciled into one route and one decoder owner. Display, Activity and launch-token checks reject stale launches or surfaces; DiLink 5/5.1 public-display routing keeps its priority, and the virtual fallback stays available until the physical route is confirmed.
Optional stock-map component/package holding uses exact prior-state journals, ownership leases and retryable restoration. An old teardown cannot release a newer route's hold. Duplicate fork routing, application-ID and packaging changes were excluded. Optional HUD song/lyrics retain verified firmware/receiver/signature checks and navigation priority. No verified DiLink 4 HUD profile or DiLink 3 windshield HUD support is claimed.
DiLink 3 guidance and map (#182) recognize the stock com.example.amapservice adapter, provide its text distance/time fields, and prepare its projection display on supported firmware. DiLink 5 adapter/display priority is preserved. Mode changes run on one serial worker and require a committed recovery marker before any cluster mutation. Partial display creation is compensated with stock mode; failed restoration stays pending and blocks a new mode until recovery succeeds. Startup recovery runs even if navigation was later disabled. The contributor's Han GCC shell tests establish the vendor commands, not an end-to-end test of the repaired DiPlay path.
Custom turn cards (#193) add 30–95% sizing, opacity and day/night glass, and an arrival/duration/distance strip using phone-supplied values. Unknown or expired guidance clears correctly, and missing values remain absent instead of being invented.
Live dashboard content (#232) switches supported iPhone map/turn-card contents without reconnecting. Completion reflects actual delivery or a safely retained paused choice. Failed delivery reconnects only when the selection and controller are still current. Stream recreation reapplies the desired content after readiness, and a retained controller carries its last accepted choice to a replacement phone. Requested and delivered content are separate, preventing wheel zoom on an undelivered map. Partial or stale writes invalidate uncertain content for a later redraw. Same-URL custom overlays update live; incompatible URL/layout changes retain the reconnect path.
Wheel controls and music
Dashboard map zoom (#214) and the opt-in main-screen joystick (#231) build on the existing wheel-key service. Configure keys while parked. Joystick mode uses the existing knob to move CarPlay focus, select and go back, with optional idle/route auto-off. Both modes are off by default and preserve call handling, normal media actions, key assignment and matching press/release decisions.
The review fixes end zoom/joystick mode when their relevant route or primary screen changes. Stable screen/content tokens and execution-time checks reject queued commands for an old phone or stream. Eligibility uses nonblocking snapshots rather than waiting for network writes. Cluster-only setup does not reset the primary-screen joystick identity. Call-volume detection and the updated lifecycle still need firmware-specific vehicle tests.
Dashboard song only when it changes (#215) shows a new title/artist for five seconds, then clears the card. Duplicate metadata and play/pause alone do not restart the window. Settings changes, session end and newer song windows invalidate stale timers, so an earlier timer cannot clear or recreate a newer card. Wheel notes keep their own priority and expiry; HUD metadata remains independent.
Album art continuity (#228) keeps the previous artwork while the next transfer is pending and shows a neutral placeholder when none exists. Confirmed failed artwork transfers clear the stale image; malformed or unrelated transfers do not clear valid artwork. This does not add a timeout for a transfer that never completes.
Diagnostic export and issue reports
The export fixes (#185, #219) support head units with no working document picker or Downloads provider. Android 10+ normally saves to Downloads/DiPlay; Android 9 uses a document picker. If unavailable, the confirmation identifies the fallback path under Android/data/com.shihab.diplay/files/diagnostic-reports/, or private DiPlay storage if external storage is also unavailable. Use View report or Share from the confirmation. Reports are not uploaded automatically.
Please report a fresh reproduction from 0.2.12, even if you previously supplied logs:
- While parked, install the update from the website over the previous public release, without uninstalling, and reproduce the problem. For boot/startup problems, note the time, then open DiPlay manually to export.
- Open Settings → Diagnostics → Save diagnostic report. Find the
.txtin Downloads/DiPlay, choose a location on Android 9, or use the confirmation's View report/Share fallback. - Review the text and remove personal information or credentials. Add it to an existing matching GitHub issue, or create a new issue.
- Include car/head-unit model, exact firmware and Android/DiLink versions, iPhone/iOS, connection backend (USB, built-in hotspot, Wi-Fi Direct or Same LAN), relevant settings, expected/actual behavior, reproduction steps and approximate failure time. Never post your hotspot password.
Export improvements make evidence available; they do not establish the underlying startup issue as fixed. General stutter, calls/Siri/microphone, iOS 15 startup, colour/theme behavior and model-specific reports still need current-device evidence.
Validation and release packaging
Final measured results, package/signature checks and remaining hardware tests are recorded in VALIDATION.md. The release package is com.shihab.diplay, version 0.2.12, version code 31, minimum SDK 28 and target SDK 37. Wi-Fi Direct requires Android 10+. Release assets include the production-signed APK, its corresponding tagged source archive, and SHA-256 checksums.
The existing release signing certificate and explicitly selected runtime authentication inputs are preserved to support installing over 0.2.11. Android signing keys and runtime identities remain outside Git and the source archive. Source-only CI builds do not provision an identity. The APK continues to use the experimental accessory identity described in BUILD.md and the existing notices; it is not Apple-certified, and future iOS acceptance is not guaranteed.
No fresh vehicle validation of the complete repaired release is claimed. Contributor device tests are scoped above and in the linked guides. Force-stop can defer OEM, cluster or Wi-Fi restoration until DiPlay reopens. Android 7/8 and non-BYD brand-specific compatibility remain outside the support scope.
Contributions reviewed for this release
#170, #171, #172, #178, #179, #181, #182, #185, #187, #191, #193, #194, #196, #211, #213, #214, #215, #219, #223, #224, #225, #228, #229, #230, #231, #232 and #235. Previous-release website maintenance (#177) is not a new APK feature.
Thanks to yanwuu, lpcheng1208, bennylee1029, serein-morii, band-wa, ojjj13, MGxjm, Dlochon, mohammed-just, romanchukg-cloud, Arthur031221, Proselyte-M, aloaiza-dev, sa3eedo12, wdubaiyu and Hanxu4131 for the contributions and evidence reconciled in this release.