Skip to content

feat: vivo 车联投屏歌词功能适配(vivo joviincar lycics show on car)) - #1013

Closed
7tattoo wants to merge 1 commit into
FoedusProgramme:betafrom
7tattoo:feature/vivo-car-lyrics
Closed

feat: vivo 车联投屏歌词功能适配(vivo joviincar lycics show on car))#1013
7tattoo wants to merge 1 commit into
FoedusProgramme:betafrom
7tattoo:feature/vivo-car-lyrics

Conversation

@7tattoo

@7tattoo 7tattoo commented Aug 28, 2026

Copy link
Copy Markdown

新增 CarLyricsManager 和 CarLyricsConstants 实现 vivo JoviInCar/uCar 歌词投屏协议的双通道推送(Metadata Channel + Extras Channel)。

核心改动:

  • 新增 logic/car/CarLyricsConstants.kt:协议常量定义
  • 新增 logic/car/CarLyricsManager.kt:歌词状态管理、双通道数据构建、 变化检测、lyricInfo 镜像键(解决 MediaMetadata.equals() 忽略 extras 导致车载端无法感知歌词更新的问题)
  • 修改 EndedWorkaroundPlayer.kt:getState() 注入式元数据方案, 替代 replaceMediaItem 避免无限反馈循环导致 ANR
  • 修改 GramophonePlaybackService.kt:集成歌词推送链路, 加载中状态、切歌刷新、开关即时生效
  • 新增设置页车机歌词开关(strings/settings/shortcuts)

修复:

  • 播放卡死闪退:replaceMediaItem 触发 onPositionDiscontinuity 反馈循环 → 改为状态注入
  • 车载一直显示 -1:MediaMetadata.equals() 忽略 extras → 利用 lyricInfo 键触发 onMediaMetadataChanged

新增 CarLyricsManager 和 CarLyricsConstants 实现 vivo JoviInCar/uCar
歌词投屏协议的双通道推送(Metadata Channel + Extras Channel)。

核心改动:
- 新增 logic/car/CarLyricsConstants.kt:协议常量定义
- 新增 logic/car/CarLyricsManager.kt:歌词状态管理、双通道数据构建、
  变化检测、lyricInfo 镜像键(解决 MediaMetadata.equals() 忽略 extras
  导致车载端无法感知歌词更新的问题)
- 修改 EndedWorkaroundPlayer.kt:getState() 注入式元数据方案,
  替代 replaceMediaItem 避免无限反馈循环导致 ANR
- 修改 GramophonePlaybackService.kt:集成歌词推送链路,
  加载中状态、切歌刷新、开关即时生效
- 新增设置页车机歌词开关(strings/settings/shortcuts)

修复:
- 播放卡死闪退:replaceMediaItem 触发 onPositionDiscontinuity
  反馈循环 → 改为状态注入
- 车载一直显示 -1:MediaMetadata.equals() 忽略 extras →
  利用 lyricInfo 键触发 onMediaMetadataChanged
@nift4

nift4 commented Aug 28, 2026

Copy link
Copy Markdown
Member

Thanks for the PR, can you please translate the description to English? Thanks

@7tattoo 7tattoo closed this by deleting the head repository Sep 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants