Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
72d5f6f
feat: lyricon integrated & support hook song lyric into maml
killerprojecte Mar 30, 2026
6f42f08
feat: lyric display mode & compat with lyricon
killerprojecte Mar 31, 2026
7bfd9e5
chore: revert some code & change central pkg
killerprojecte Mar 31, 2026
6bbb4e1
chore: switch to use lyricon listener (waiting merge in upstream)
killerprojecte Mar 31, 2026
cdd4e6f
chore: use latest api definition of lyricon
killerprojecte Mar 31, 2026
89b812c
ci: remove pull request trigger
killerprojecte Mar 31, 2026
0c0313c
feat: add SuperLyric provider & dynamic lyric support & lyric provide…
killerprojecte Apr 1, 2026
8345e8a
fix: write lrc into music element and parse it when mLyric is change …
killerprojecte Apr 1, 2026
6c30e06
chore: better lyric update logic
killerprojecte Apr 1, 2026
eddf4db
feat: bypass audio-video demuxing logic
killerprojecte Apr 1, 2026
f1fd806
feat: video volume & disable rear screen cover
killerprojecte Apr 2, 2026
fb7e85d
feat: widget extra config & hide time tip & optional more debug output
killerprojecte Apr 2, 2026
58ba07f
feat: super lyric display mode
killerprojecte Apr 2, 2026
7e07659
fix: serialization annotation
killerprojecte Apr 2, 2026
c8899ac
feat: color theme & ui improvement
killerprojecte Apr 2, 2026
9066105
feat: optimized ui performance & animation effects & upgrade miuix to…
killerprojecte Apr 2, 2026
ae1ee3a
ci: revert change
killerprojecte Apr 2, 2026
1e5e8ef
ci: fix
killerprojecte Apr 2, 2026
87f698d
ci: fix
killerprojecte Apr 2, 2026
a836230
ci: fix
killerprojecte Apr 2, 2026
f3690d0
ci: fix android sdk
killerprojecte Apr 2, 2026
ab48255
fix: build script
killerprojecte Apr 2, 2026
e492a3c
chore: handle time tip for custom card & supports dynamically switchi…
killerprojecte Apr 3, 2026
e11509f
feat: wallpaper manager with timed switching & optimized widget api c…
killerprojecte Apr 4, 2026
96f2b2f
chore: Easter theme & improve wallpaper manager ui
killerprojecte Apr 5, 2026
fc51d7c
feat: artist display for static lyrics & allow rear focus notificatio…
killerprojecte Apr 5, 2026
74f3a10
feat: floating nav bar with liquid glass
killerprojecte Apr 5, 2026
40f1c1b
chore: optimized ui performance
killerprojecte Apr 5, 2026
b936000
fix: contributor update list
killerprojecte Apr 5, 2026
d0f4ee6
feat: Easter egg for Xiaomi fans festival
killerprojecte Apr 6, 2026
47bd78c
ci: changelog in Xposed repo
killerprojecte Apr 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@ name: Build and Release

on:
push:
branches: ["master", "main"]
pull_request:
branches: ["master", "main"]
branches: [ "master", "main", "dev" ]
workflow_dispatch:

jobs:
Expand All @@ -20,15 +18,21 @@ jobs:
with:
fetch-depth: 0

- name: Set up JDK 17
uses: actions/setup-java@v5
with:
java-version: "17"
distribution: "temurin"
cache: gradle
#- name: Set up JDK 21
# uses: actions/setup-java@v5
# with:
# java-version: "21"
# distribution: "temurin"
# cache: gradle

- name: Setup Android SDK
uses: amyu/setup-android@v5
with:
distribution: "zulu"
java-version: "21"

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v6

- name: Grant execute permission for gradlew
run: chmod +x gradlew
Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ jobs:
with:
fetch-depth: 0

- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
java-version: "17"
java-version: "21"
distribution: "temurin"
cache: gradle

Expand Down Expand Up @@ -77,6 +77,11 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Prepare Changelog for Xposed Repo
run: |
echo "https://github.com/killerprojecte/REAREye/releases/tag/${{ github.ref_name }}" > changelog_xposed.md
cat changelog.md >> changelog_xposed.md

- name: Publish to Xposed Modules Repo
uses: softprops/action-gh-release@v2
with:
Expand All @@ -85,5 +90,5 @@ jobs:
tag_name: ${{ github.ref_name }}
name: ${{ github.ref_name }}
generate_release_notes: false
body: "https://github.com/killerprojecte/REAREye/releases/tag/${{ github.ref_name }}"
body_path: changelog_xposed.md
files: app/build/outputs/apk/release/*.apk
8 changes: 7 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,10 @@
.cxx
local.properties
.claude
.tmp-ref
.tmp-ref
rear-widget-api/build
**/.project
.project
.settings
**/.settings
**/.classpath
257 changes: 188 additions & 69 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,69 +1,188 @@
# REAREye
- 针对小米17Pro/Pro Max的背屏增强模块


## 功能
- 允许自定义应用在背屏中开启
> 使用ADB或者其他应用开启 目前没有计划内置启动器
- 允许自定义的音乐控件在背屏中显示
> 可以支持任意使用媒体控件的APP
>
> 如: Apple Music, BiliBili等
>
> **修改白名单应用需要重启 com.xiaomi.subscreencenter - 背屏**

- 将指定的应用设为后台白名单(防止在背屏被系统杀除)

> 修改后需要重启系统生效

- 强制更新音乐控件状态

> 部分国外音乐APP在背屏息屏状态时播放下一首歌曲(自动切换)
>
> 可能不会在背屏上立刻变更显示内容(在时钟变化时系统会触发更新)
>
> 在开启此功能后 音乐播放状态发生变更时会强制触发更新

### 主题管理

- 移除视频长度/帧率限制

> 移除视频长度限制(仍然保留视频剪辑功能)
>
> - 合理范围内的视频长度都能正常剪辑并加载
> - 已测试过2小时的哪吒2无法正常进入剪辑 但是可以通过先进入剪辑后取消再载入(该状态不会进入剪辑模式)
>
> 移除视频帧率限制
> - 默认帧率限制为最大30fps
> - 启用本功能后自动使用视频的帧率
> - 但上限为120帧(屏幕上限)

- 移除背屏模板的数量限制

> 原版背屏模板数量上限为15个
>
> 开启本功能后将不再限制数量
>
> 暂未测试在超过20个以上十分能够正常翻页

## 杂项功能

因为懒得重新写一个独立的Xposed模块

所以先写在这了

- 移除国行GMS服务限制

> 启用并重启系统后将会强制在SystemConfig中移除下列feature
>
> > cn.google.services
> >
> > com.google.android.feature.services_updater
>
> 开启该功能后可以解锁GMS针对国行系统的限制
>
> 例如 `Google Location History`, `Google Map Timeline` 等功能
>
> 理论上可以彻底替代 https://github.com/fei-ke/unlock-cn-gms
> 或类似的 Magisk/KernelSU 模块
> 并且可以提供更广泛的兼容性
<p align="center">
<img src="https://reareye-gh.uwu.hk/logo.svg" alt="REAREye logo" width="160" style="border-radius: 1.5rem;" />
</p>

<h1 align="center">REAREye</h1>

<p align="center">
适用于小米 17 Pro / 17 Pro Max 的背屏增强模块。<br>
基于 LSPosed / Xposed,为系统框架、背屏中心和主题管理提供更细粒度的可配置能力。
</p>

<p align="center">
<a href="https://github.com/killerprojecte/REAREye/releases"><img src="https://img.shields.io/github/v/release/killerprojecte/REAREye?display_name=tag" alt="GitHub release"></a>
<a href="https://github.com/killerprojecte/REAREye/blob/main/LICENSE"><img src="https://img.shields.io/github/license/killerprojecte/REAREye" alt="GitHub license"></a>
<a href="https://github.com/killerprojecte/REAREye/issues"><img src="https://img.shields.io/github/issues/killerprojecte/REAREye" alt="GitHub issues"></a>
<a href="https://developer.android.com/"><img src="https://img.shields.io/badge/Android-16%2B-3DDC84?logo=android&logoColor=white" alt="Android"></a>
<a href="https://github.com/LSPosed/LSPosed"><img src="https://img.shields.io/badge/Framework-LSPosed%20%2F%20Xposed-5C6BC0" alt="Framework"></a>
</p>

## 功能概览

- 放行指定应用在背屏启动,并支持活动白名单控制
- 自定义音乐控件白名单,兼容更多媒体类应用
- 增强歌词显示,支持原文、翻译、罗马音与不同歌词提供器
- 管理背屏组件模板、常驻卡片与组件额外显示选项
- 管理背屏壁纸、定时轮播、拖拽排序与轮播间隔
- 解除主题管理中的多项限制,包括视频壁纸时长、帧率和模板数量限制
- 移除国行 GMS 功能限制
- 提供切换主屏 / 背屏的快捷设置 Tile

## 主要功能

### 模块设置

- 主题模式切换
- 支持 Miuix / Monet 两套风格
- 支持跟随系统、浅色、深色模式
- 隐藏桌面入口
- 可选隐藏 REAREye 的 Launcher 图标
- 更多调试输出
- 便于排查模块行为与兼容性问题

### 系统框架增强

- 背屏应用活动白名单
- 自定义哪些应用允许在背屏中打开
- 可单独维护允许的应用列表
- 允许所有 Activity 在背屏打开
- 适合自行测试未适配应用
- 后台白名单
- 让指定应用在背屏使用时更不容易被系统杀掉
- 锁定应用进程
- 将指定应用以更强的保活方式维持在后台
- 阻止锁屏后背屏返回桌面
- 保持背屏当前状态,减少锁屏后的自动跳回
- 禁用背屏保护
- 主屏进入全屏模式时,不再自动锁定背屏

### 背屏中心增强

#### 背屏个性化管理

- 组件模板管理器
- 管理 Widget 到模板文件的映射关系
- 支持导入模板文件并立即更新运行时映射
- 卡片管理器
- 管理常驻卡片的标题、目标包名、组件名称、优先级与启用状态
- 组件额外设置管理器
- 手动添加需要额外显示选项的组件
- 当前支持为指定组件关闭通知时间显示
- 壁纸管理器
- 查看当前系统可用背屏壁纸
- 设定当前壁纸
- 将壁纸加入轮播列表
- 拖拽调整轮播顺序
- 按毫秒配置每张壁纸的切换间隔
- 开启或关闭背屏壁纸轮播

#### 音乐控件增强

- 音乐控件白名单
- 自定义哪些应用的音乐控件允许显示在背屏中
- 对使用标准媒体控件的应用更友好
- 强制刷新音乐控件状态
- 解决部分应用在切歌或状态变化后背屏控件更新不及时的问题

#### 歌词增强

- 歌词显示模式
- 支持原文、翻译、罗马音
- 歌词提供器切换
- 支持 `Lyricon`
- 支持 `SuperLyric`
- 逐行歌词显示模式
- 可选择显示原文或翻译

#### 视频与媒体行为

- 强制视频壁纸循环播放
- 视频壁纸音量调节
- 支持从 0% 到 100% 细粒度调节播放音量

### 主题管理增强

- 解除视频壁纸限制
- 移除视频时长限制
- 移除默认帧率限制,尽量按素材原始帧率加载
- 解除背屏模板数量上限
- 不再受原厂默认模板数量限制
- 解除视频壁纸静音限制
- 允许添加带音频的视频壁纸

### 杂项功能

- 移除国行 GMS 服务限制
- 用于解除部分国行系统对 Google 服务功能的限制
- 例如时间线、位置记录等功能的可用性问题

### 额外功能

- 快捷设置 Tile
- 切换当前应用到背屏
- 将先前移至背屏的应用切回主屏
- 首页状态与快捷操作
- 查看模块工作状态、版本信息、更新状态
- 提供针对背屏中心 / 主题管理等目标应用的快捷操作入口

## 模块作用域

默认作用域包含以下目标进程:

- `android`
- `com.xiaomi.subscreencenter`
- `com.android.thememanager`
- `com.android.systemui`

## 前置要求

- Android 8.1 及以上
- LSPosed / Xposed 兼容环境
- Xposed API 93 及以上
- 适用于带背屏的目标机型,当前仓库主要面向小米 17 Pro / 17 Pro Max
- 部分功能或快捷操作需要 Root 权限

## 安装方式

1. 从 [Releases](https://github.com/killerprojecte/REAREye/releases) 下载最新 APK 并安装。
2. 在 LSPosed 或兼容框架中启用 `REAREye`。
3. 确认模块作用域包含:`android`、`com.xiaomi.subscreencenter`、`com.android.thememanager`、
`com.android.systemui`。
4. 重启设备,或至少重启相关目标应用后再进入模块配置。
5. 打开模块应用,根据自己的需求启用对应功能。

## 使用说明

- 背屏白名单、音乐控件白名单、组件模板、卡片与壁纸轮播等配置修改后,建议重启
`com.xiaomi.subscreencenter`。
- 系统框架类修改通常需要重启系统后才能稳定生效。
- 主题管理相关修改建议在变更后重启 `com.android.thememanager`,必要时重启系统。
- 部分快捷操作或系统级能力依赖 Root 权限,请确保 Root 管理器已正确授权。
- 本模块不内置背屏应用启动器;如果你需要直接在背屏拉起某些应用,可以配合 ADB 或其他启动方式使用。
- 解锁模板数量上限后,极端大数量模板场景仍建议自行测试稳定性。

## 适用场景

- 想让更多应用在背屏上正常启动或驻留
- 想在背屏使用更多第三方音乐 App 的媒体控件
- 想更自由地控制歌词来源和显示内容
- 想自己维护背屏组件模板和常驻卡片
- 想给背屏壁纸做定时轮播和排序管理
- 想解除原厂主题管理器对视频壁纸和模板数量的限制
- 想在不刷额外 Magisk 模块的情况下处理国行 GMS 限制

## 获取帮助

- 提交问题反馈: [Issues](https://github.com/killerprojecte/REAREye/issues)
- 查看版本发布: [Releases](https://github.com/killerprojecte/REAREye/releases)
- 项目仓库地址: [killerprojecte/REAREye](https://github.com/killerprojecte/REAREye)

## 免责声明

- 本模块会修改系统与目标应用行为,请自行评估风险。
- 不同系统版本、不同固件版本、不同 Root / Xposed 环境之间可能存在兼容性差异。
- 使用本模块造成的功能异常、数据问题或设备风险,请自行承担。

## License

See [LICENSE](./LICENSE).
20 changes: 18 additions & 2 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,14 @@ fun runGitCommand(vararg args: String): String? = runCatching {
}.getOrNull()

android {
buildToolsVersion = gropify.project.android.buildToolsVersion
namespace = gropify.project.app.packageName
compileSdk = gropify.project.android.compileSdk
compileSdk {
version =
release(gropify.project.android.compileSdk) {
minorApiLevel = gropify.project.android.compileSdkMinor
}
}

val baseVersionName = gropify.project.app.versionName.replace("\"", "")
val buildSuffix = project.findProperty("buildSuffix") as? String ?: "dev"
Expand Down Expand Up @@ -102,6 +108,8 @@ tasks.withType<KotlinJvmCompile>().configureEach {
}

dependencies {
implementation(project(":rear-widget-api"))

compileOnly(libs.rovo89.xposed.api)
ksp(libs.yukihookapi.ksp.xposed)
implementation(libs.yukihookapi)
Expand All @@ -122,7 +130,15 @@ dependencies {
implementation(libs.androidx.compose.material.icons.extended)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.miuix)
implementation(libs.miuix.ui)
implementation(libs.miuix.preference)
implementation(libs.miuix.icons)
implementation(libs.haze)
implementation(libs.backdrop)
implementation(libs.capsule)
implementation(libs.okhttp)
implementation(libs.gson)
implementation(libs.lyricon.provider)
implementation(libs.lyricon.central)
implementation(libs.superlyric)
}
3 changes: 2 additions & 1 deletion app/proguard-rules.pro
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,5 @@
-dontwarn java.lang.reflect.AnnotatedType

# --- Tool ---
-keep class hk.uwu.reareye.hook.** { *; }
-keep class hk.uwu.reareye.hook.** { *; }
-keep class com.hchen.superlyricapi.* {*;}
Loading
Loading