How limczhh/hyperlyric works
HyperLyric is an Android Xposed module for adding lyrics and media-card enhancements to Xiaomi HyperOS, with a separate notification-based lyric mode. The principal flow is player lyric or metadata input → selected lyric source and shared lyric state → lyric rendering → SystemUI island presentation. The README also documents online lyric sources, AI translation, configurable island and media-card styling, gesture controls, and system-limit bypasses. Paths and calls are based on the supplied tree and excerpts; some documented subsystems were not sampled, so their internal wiring is intentionally left broad.
Main entry points: SourceManager.kt Source manager · SystemUIHookRegistry.kt SystemUI hooks · PreferenceKeys.kt User preferences · LiveLyricService.kt Live lyric service
Components 24
Lyrics and sources
- Lyricon provider
app/src/main/java/com/lidesheng/hyperlyric/lyric/source/SourceManager.kt - SuperLyric source
app/src/main/java/com/lidesheng/hyperlyric/lyric/source/SourceManager.kt - LyricInfo metadata
app/src/main/java/com/lidesheng/hyperlyric/lyric/source/SourceManager.kt - Source manager
app/src/main/java/com/lidesheng/hyperlyric/lyric/source/SourceManager.kt - Lyric models
app/src/main/java/com/lidesheng/hyperlyric/lyric/model/Song.kt - Online lyric lookup
app/src/main/java/com/lidesheng/hyperlyric/online/LyricApiProvider.kt - AI lyric enhancement
app/src/main/java/com/lidesheng/hyperlyric/root/lyricenhancement
Island presentation
- Lyric renderer
app/src/main/java/com/lidesheng/hyperlyric/root/island/renderer/LyricRenderer.kt - Island content
app/src/main/java/com/lidesheng/hyperlyric/root/island/content/IslandSlotContentFacade.kt - SystemUI hooks
app/src/main/java/com/lidesheng/hyperlyric/root/island/hooks/SystemUIHookRegistry.kt
Media enhancements
- Media card styling
app/src/main/java/com/lidesheng/hyperlyric/root/mediacard - Expanded island card
app/src/main/java/com/lidesheng/hyperlyric/root/mediacard/island/IslandExpandedMediaElementController.kt
Android runtime
- Hook runtime
app/src/main/java/com/lidesheng/hyperlyric/root/HookEntry.kt - Live lyric service
app/src/main/java/com/lidesheng/hyperlyric/service/LiveLyricService.kt - Media metadata source
app/src/main/java/com/lidesheng/hyperlyric/service/LiveLyricService.kt - Notification lyric output
app/src/main/java/com/lidesheng/hyperlyric/service/LiveLyricService.kt - Quick settings tile
app/src/main/java/com/lidesheng/hyperlyric/service/LyricTileService.kt
Configuration and limits
- User preferences
app/src/main/java/com/lidesheng/hyperlyric/common/PreferenceKeys.kt - System limit bypass
app/src/main/java/com/lidesheng/hyperlyric/root/UnlockFocusWhitelist.kt
Other components
- Music player
- Lyric services
- OpenAI-compatible API
- HyperOS SystemUI
- Shizuku service
Connections 23
- Music player → Source manager: provides lyrics
- Lyricon provider → Source manager: selected source
- SuperLyric source → Source manager: selected source
- LyricInfo metadata → Source manager: provides metadata
- Source manager → Lyric models: dispatches data
- Online lyric lookup → Lyric services: queries
- AI lyric enhancement → OpenAI-compatible API: requests translation
- Lyric models → Lyric renderer: renders lyrics
- Lyric renderer → Island content: supplies content
- SystemUI hooks → Island content: updates content
- Hook runtime → SystemUI hooks: registers hooks
- SystemUI hooks → HyperOS SystemUI: hooks UI
- Media card styling → HyperOS SystemUI: customizes cards
- Expanded island card → HyperOS SystemUI: changes layout
- Music player → Media metadata source: publishes metadata
- Media metadata source → Live lyric service: emits updates
- Live lyric service → Notification lyric output: updates notifications
- User preferences → Source manager: selects source
- User preferences → Media card styling: configures styling
- System limit bypass → HyperOS SystemUI: alters restrictions
- System limit bypass → Shizuku service: requests privileges
- Quick settings tile → User preferences: toggles listening
- Quick settings tile → Live lyric service: rebinds service