一款专为 Android TV 设计的视频播放器,支持 WebDAV 网盘资源导入、智能刮削、记忆续播、IPTV 直播等功能。

构建号:10015。安装包请从 Releases 下载;仓库内不再附带 APK 二进制。
- 版本:
versionName1.0.15,versionCode10015。 - 版本更新对话框:窗口尺寸调整为
380dp x 350dp;更新内容长文本支持滚动查看(方向键滚动),避免焦点跑出弹窗导致无法操作。 - 首页版本更新角标:版本更新提示徽章改为 TV 可聚焦卡片,焦点导航更稳定(下键回顶栏、方向键更一致的入口切换)。
- 版本:
versionName1.0.14,versionCode10014。 - 资源库列表:当前使用的资源库不再在副标题中显示「当前」,改为主信息卡片右侧的选中(勾选)图标;资源库选择弹窗中的列表项采用相同逻辑,地址行更简洁。
- 首页 · TMDB 配置提示:需要配置 TMDB API 的对话框打开时,焦点锁定在弹窗内;取消与确认可用左右键切换,避免焦点逃逸到背景界面。
- 设置中心:左侧分类栏略加宽;标题、列表项、设置卡片与「关于」等在紧凑 UI 比例下字号略增,行高与内边距微调,远距离观看更清晰;直播「定时刷新」相关下拉触发器字号与高度略增。
- 版本:
versionName1.0.13,versionCode10013。 - 直播设置 · 定时刷新:「定时刷新直播源」改为药丸按钮 + 上拉菜单选择间隔(关闭、1/2/4/6/12 小时);深色圆角面板、焦点行黄底黑字,与 TV 端常见交互一致。
- 尺寸与可读性:药丸高度与同行 Switch 对齐,小字号与紧凑
contentPadding,减轻时间文字竖向裁切;上拉菜单收窄、字号与药丸一致,六项时间一次完整展示(无内部滚动)。 - 菜单位置:
Popup锚在药丸右下(BottomEnd),整体上移并与药丸保留垂直间距;额外平移由AutoRefreshPopupExtraOffsetX/AutoRefreshPopupExtraOffsetY控制(默认各 5dp,右正下正)。 - 修复:上拉菜单偏移不再使用
remember(density)缓存整段IntOffset,避免仅修改 dp 常量时界面不随参数更新。 - 其他:启动图/主题与部分弹窗尺寸、TMDB/媒体同步与直播相关界面等同期迭代,详见对应提交变更。
v1.0.11 侧重媒体库/刮削链路、播放器与全站界面的整体体验与测试补充;v1.0.12 在此基础上,把更新集中在 TV 遥控器焦点、扫码网页推送后的提示与窗口层级、直播设置里历史列表与二维码的交互流程,不重复 1.0.11 已涵盖的刮削与播放大项。
| 方面 | v1.0.11(基线) | v1.0.12(本版新增/调整) |
|---|---|---|
| 首页 | 详情/首页/资源库等「体验改进」(泛化描述) | 明确行为:进入首页默认焦点在刷新;无资源时刷新上锁左键、下键直达底部栏「首页」;有资源时下键进内容区;底部导航与菜单键衔接优化 |
| WebDAV 扫码 | 随整体设置/资源库迭代 | 自检通过后关二维码 → 独立提示(引导去首页资源库选服务器并开始刮削);提示用 Dialog,避免被界面挡住 |
| TMDB API 扫码 | 设置与 TMDB 相关能力延续 1.0.11 | 手机推送成功后:Toast 提示后自动关闭二维码窗口 |
| 直播:源 / 节目表 / UA | 直播界面与 LiveViewModel 等调整(1.0.11) |
历史列表点「添加」不关闭列表,二维码叠在列表上;推送成功先关二维码,立刻弹出「添加成功」(按入口区分直播源/节目表/UA 文案);成功提示用 Dialog 叠在列表之上(修复原先 Popup 被列表挡住、需先关列表才看到提示的问题);关提示后同一列表内选资源再关闭列表;二维码/成功提示显示时禁止底层列表被返回误关 |
构建与文档(v1.0.12):versionName / versionCode 为 1.0.12 / 10012。
- 变更说明见上文 「v1.0.15 更新简介」。
- 变更说明见上文 「v1.0.14 更新简介」。
- 变更说明见上文 「此前版本:v1.0.13 更新摘要」。
- 构建:1.0.12 / 10012。内容见上文 「此前版本:v1.0.12 相对 v1.0.11」 对照表。
- 媒体库与刮削:媒体分类策略、文件夹类型提示、剧集名解析、刮削与元数据、观看与统计等优化
- 界面与播放:播放器与
PlayerViewModel、详情/首页/资源库、分类与搜索、设置中心、直播界面与LiveViewModel等体验改进 - 其他:单元测试补充;
app/build.gradle.kts构建配置更新
- 直播:播放失败后的重试流程优化,降低异常退出与长时间卡住的几率
- 版本更新:TV 端更新对话框焦点与按钮操作优化(含 TV 专用按钮、焦点锁定)
- 关于应用:当前版本号由
BuildConfig读取,与安装包一致 - TMDB:首页设置支持清除 TMDB API Key(含确认);TMDB API 设置窗口焦点锁定,防止焦点移出窗口
- 二维码配置窗口统一:TMDB、WebDAV、直播源三个二维码配置窗口风格统一
- 统一尺寸:320dp × 365dp,更加紧凑
- 统一关闭按钮:右上角黄色底黑色图标,高亮聚焦
- 统一背景色:SurfaceDark 深色背景
- 焦点锁定:打开窗口自动聚焦关闭按钮,方向键锁定在窗口内
- 返回键关闭:按遥控器返回键可直接关闭窗口
- 二维码窗口布局优化:缩小二维码白色底框,优化间距,确保底部文字完整显示
- 直播源二维码窗口:组件排列更紧凑,访问地址网址可完整显示
- APTV 专用 UA:访问 aptv.app 域名时自动使用 iPhone UA,提高兼容性
- 设置中心焦点导航优化:左侧菜单右键快速跳转右侧功能区,操作更便捷
- 内置直播源调整:优化为 LEMONTV、MIGU、APTV 三个稳定源
- EPG 节目表更新:默认使用 seven-days.xml.gz,新增多个备用源
- 网页配置优化:WebDAV/直播配置支持多页面共享,修复推送数据接收问题
- 焦点管理优化:修复直播界面选择源窗口焦点丢失问题
- IPTV 直播:支持 M3U 直播源,内置多个直播源
- 跳过片头片尾设置:播放时可设置片头片尾时间,自动跳过
- 自动跳过开关:设置中心可开启/关闭自动跳过片头片尾功能
- 记忆续播开关:设置中心可开启/关闭记忆播放进度功能
- 自动下一集:电视剧播放完自动播放下一集
- WebDAV 网盘支持:连接 OpenList/AList 等 WebDAV 服务
- 智能刮削:优先使用本地 .nfo 文件,其次 TMDB 网络刮削
- 多类型媒体:支持电影、电视剧、纪录片、演唱会
- 资源库管理:支持多个 WebDAV 资源库切换
- 记忆续播:自动记录播放进度,下次从断点继续(可开关控制)
- 智能跳过:支持跳过片头片尾,按剧集系列统一配置
- 自动下一集:电视剧自动连播,最后一集提示结束
- 音轨/字幕选择:播放时切换音轨和字幕
- 播放控制:支持快进/快退、暂停、音量调节
- 直播源管理:支持自定义 M3U 直播源
- 内置直播源:提供多个内置直播源选择
- EPG 节目表:支持节目预告显示
- 频道切换:数字键快速换台,上下键切换频道
- TV 专属 UI:针对遥控器操作优化
- 焦点导航:方向键控制焦点移动
- 沉浸式体验:全屏播放,自动隐藏状态栏
- TMDB API 配置:支持自定义 TMDB API Key
- 最近观看:显示最近观看记录
- 搜索功能:支持媒体搜索
- 通知栏:首页显示滚动通知,支持远程配置
- Android 5.0 (API 21) 及以上(以
app/build.gradle.kts中minSdk为准) - Android TV 或电视盒子
- 语言:Kotlin
- UI 框架:Jetpack Compose TV (TvMaterial3)
- 架构:MVVM + Hilt 依赖注入
- 数据库:Room
- 网络:Retrofit + OkHttp
- 图片加载:Coil
# 克隆项目
git clone https://github.com/jia070310/lomenTV-VDS.git
# 进入项目目录
cd lomenTV-VDS
# 构建 Debug 版本
./gradlew assembleDebug
# 构建 Release 版本
./gradlew assembleRelease- 方向键(上下左右):移动焦点、选择项目
- 确定键(OK/Enter):确认选择、进入详情、播放媒体
- 返回键(Back):返回上一级、关闭弹窗
- 主页键(Home):返回系统主页
- 方向键左右:快进/快退
- 方向键上下:调节音量(部分设备)
- 确定键:暂停/播放
- 菜单键:显示播放设置(音轨、字幕、跳过片头片尾)
- 数字键:直播界面快速输入频道号
- 左方向键:从右侧功能区返回左侧菜单
- 右方向键:从左侧菜单快速跳转右侧功能区
- 下方向键:在列表中向下移动
- 左方向键:呼出频道列表
- 右方向键:切换线路(多线路视频源)
- 下方向键:上下切换频道
- 菜单键:呼出播放界面状态栏
- 单击:选中项目(获取焦点)
- 双击:确认选择(相当于遥控器确定键)
- 滑动:滚动列表内容
- 系统返回键:返回上一级
- 方向键(↑↓←→):导航焦点
- Enter:确定
- Esc/Backspace:返回
- 数字键 0-9:直播界面选台
- 左方向键:呼出频道列表
- 右方向键:切换线路(多线路视频源)
- 下方向键:上下切换频道
- 鼠标双击屏幕:呼出播放界面状态栏
- 启动应用后,配置 TMDB API Key(可选,用于媒体刮削)
- 在设置页添加 WebDAV 网盘
- 等待媒体刮削完成
- 开始观看
- 进入设置页
- 选择"添加 WebDAV 网盘"
- 使用手机扫描二维码,在网页上填写配置信息
- 或选择"手动输入"直接填写服务器地址、端口、路径、用户名、密码
- 保存并测试连接
- 访问 TMDB 官网 申请 API Key
- 在设置页选择"TMDB API 设置"
- 使用手机扫描二维码,在网页上输入 API Key
- 配置成功后即可使用 TMDB 刮削功能
应用支持从远程服务器获取通知并在首页显示。
通知文件位置:notifications.json
访问方式:应用通过 https://gh-proxy.org/ 加速器访问 GitHub 上的通知文件
配置格式:
{
"notifications": [
{
"id": "welcome",
"title": "欢迎使用",
"content": "通知内容",
"type": "info",
"enabled": true
}
]
}更新方式:
- 修改
notifications.json文件 - 提交到 GitHub 仓库
- 应用自动获取最新通知(每次打开首页时刷新)
app/src/main/java/com/lomen/tv/
├── data/ # 数据层
│ ├── local/ # 本地数据库
│ ├── remote/ # 远程 API
│ ├── repository/ # 仓库
│ ├── scraper/ # 媒体刮削
│ └── webdav/ # WebDAV 客户端
├── domain/ # 领域层
│ ├── model/ # 数据模型
│ └── service/ # 业务服务
├── ui/ # UI 层
│ ├── screens/ # 页面
│ ├── components/ # 组件
│ ├── theme/ # 主题
│ └── viewmodel/ # ViewModel
└── utils/ # 工具类
- TMDB - 提供媒体元数据 API
- Jetpack Compose TV - TV 端 UI 框架