Compare commits

...
2 changed files with 181 additions and 86 deletions
+70 -62
View File
@@ -3,14 +3,13 @@
</p> </p>
<p align="center"><strong>Entryway</strong></p> <p align="center"><strong>Entryway</strong></p>
<p align="center">多服务器聚合管理的 Android 媒体客户端,支持 Jellyfin 和 Emby。</p> <p align="center">多服务器聚合管理的跨平台媒体客户端,支持 Jellyfin 和 Emby。</p>
<p align="center">A multi-server aggregation Android media client for Jellyfin & Emby.</p> <p align="center">A multi-server aggregation media client for Jellyfin & Emby — Android, Android TV & Windows.</p>
<p align="center"><a href="https://www.yamby.cn">官方网站 | Official Website</a></p>
<p align="center"> <p align="center">
<img src="https://img.shields.io/badge/Platform-Android-3DDC84?style=flat-square&logo=android&logoColor=white" alt="Android"> <img src="https://img.shields.io/badge/Platform-Android%20%7C%20Android_TV%20%7C%20Windows-3DDC84?style=flat-square" alt="Platform">
<img src="https://img.shields.io/badge/Kotlin-2.0-7F52FF?style=flat-square&logo=kotlin&logoColor=white" alt="Kotlin"> <img src="https://img.shields.io/badge/Server-Jellyfin%20%7C%20Emby-AA0000?style=flat-square" alt="Server">
<img src="https://img.shields.io/badge/Jetpack_Compose-Material_3-4285F4?style=flat-square&logo=jetpackcompose&logoColor=white" alt="Compose">
<img src="https://img.shields.io/badge/Min_SDK-27_(Android_8.1)-34A853?style=flat-square" alt="MinSDK">
<img src="https://img.shields.io/badge/License-MIT-blue?style=flat-square" alt="License"> <img src="https://img.shields.io/badge/License-MIT-blue?style=flat-square" alt="License">
</p> </p>
@@ -18,83 +17,92 @@
## 最新版本 | Latest Release ## 最新版本 | Latest Release
- **手机版 v0.17.0**:完整多弹幕 API 管理、窄屏布局修复与按服务隔离的匹配和缓存 **全局标签 `v0.24.0`**(各端应用版本独立;手机版为 PreviewTV 与 Windows 为 Debug
- **TV 版 v0.16.0**:移植多弹幕 API、重排遥控器弹窗并修复弹幕穿透菜单与焦点问题
- **Windows v0.14.0**:提供 Windows x64 安装器、硬件解码策略与字幕/资源作用域修复 | 平台 | 应用版本 | 构建号 | 下载 |
- **手机版 APK**[`entryway-debug-0.17.0.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/entryway-debug-0.17.0.apk) | --- | --- | --- | --- |
- **TV 版 APK**[`Entryway-tv-debug-0.16.0.apk`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/Entryway-tv-debug-0.16.0.apk) | Android 手机版 | 0.24.0 | 45 | [`entryway-preview-0.24.0.apk`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.24.0/entryway-preview-0.24.0.apk) |
- **Windows x64**[`Entryway_0.14.0+33_Windows_x64_Setup.exe`](https://github.com/JackYucongjia/Entryway_Release/releases/download/v0.17.0/Entryway_0.14.0%2B33_Windows_x64_Setup.exe) | Android TV 版 | 0.18.1 | 39 | [`Entryway-tv-debug-0.18.1.apk`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.24.0/Entryway-tv-debug-0.18.1.apk) |
| Windows x64 | 0.18.0 | 37 | [`Entryway_0.18.0+37_Windows_x64_Setup.exe`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.24.0/Entryway_0.18.0+37_Windows_x64_Setup.exe) |
> Android 手机版从 0.24.0 起使用 Preview 持续发布构建:启用 R8、AOT 与 Baseline Profile,但仍沿用 1.0 前公开包的调试证书,可直接覆盖安装;TV 继续使用 Debug 构建,Windows 安装包未签名。Preview/Debug 均不是正式 Release 构建。
>
> ⚠️ v0.19.0 的手机安装包误用了正式发布证书,无法覆盖安装。0.18.x 及更早版本可直接覆盖安装 0.20.0;若已安装 v0.19.0,需先卸载再安装。
>
> Windows 端正在重构,预计 **2026 年 8 月 17 日**正式发布新版。
- **变更日志**[`RELEASE_NOTES.md`](RELEASE_NOTES.md) - **变更日志**[`RELEASE_NOTES.md`](RELEASE_NOTES.md)
- **全部版本**[Gitea Releases](https://gitea.yamby.cn/yusheng/Entryway_Release/releases) [GitHub Releases](https://github.com/JackYucongjia/Entryway_Release/releases)
## 概述 | Overview ## 概述 | Overview
**Entryway** 是一个面向自建媒体服务器用户的 Android 客户端,核心设计理念是 **多服务器聚合**——在一个统一的界面中管理和浏览你所有的 Jellyfin / Emby 服务器。 **Entryway** 是一个面向自建媒体服务器用户的跨平台客户端,覆盖 **Android 手机**、**Android TV** 和 **Windows** 三端。核心设计理念是 **多服务器聚合**——在一个统一的界面中管理和浏览你所有的 Jellyfin / Emby 服务器。
Entryway is an Android client designed for self-hosted media server users. Its core philosophy is **multi-server aggregation** — managing and browsing all your Jellyfin / Emby servers from a single, unified interface. Entryway is a cross-platform client for self-hosted media server users, available on **Android Mobile**, **Android TV**, and **Windows**. Its core philosophy is **multi-server aggregation** — managing and browsing all your Jellyfin / Emby servers from a single, unified interface.
**官网**[www.yamby.cn](https://www.yamby.cn)
## 核心特性 | Features ## 核心特性 | Features
### 🖥️ 多服务器管理 ### 🖥️ 多服务器管理
- 添加多个 Jellyfin / Emby 服务器,一键快速切换 - 添加多个 Jellyfin / Emby 服务器,一键快速切换
- 服务器卡片显示用户头像、用户名、服务器地址 - 服务器卡片显示用户头像、用户名、服务器地址
- 长按菜单:重新登录、服务器线路、修改图标、修改备注、设为私密、修改密码、编辑、删除
- 溢出菜单:搜索、排序(默认/名称/最近使用)、网格/列表布局切换、显示选项
- 私密服务器:标记后默认隐藏,需手动开启显示 - 私密服务器:标记后默认隐藏,需手动开启显示
- 冷启动离线恢复:服务器不可用时不清除账号
### 🏠 首页即服务器 ### 🎬 双引擎播放器(Android
- 首页直接展示当前活跃服务器的媒体库内容 - **ExoPlayer**:默认引擎,基于 Media3 + FFmpeg 扩展
- 左上角显示当前服务器名,点击即可切换到其他非私密服务器 - **mpv**:高兼容性引擎,含 libdvdread/libdvdnav/libbluray
- 支持精选轮播(Featured Carousel)和无轮播两种模式 - 自动容错切换,保留播放进度
- 解码模式:SW / HW / HW+ / DV-SW
### 🎬 双引擎播放器 ### 💬 多弹幕服务
- **ExoPlayer 引擎**:默认播放引擎,基于 Media3 + Jellyfin FFmpeg 扩展 - 弹弹Play 官方、LogVar 弹幕 API、其他弹弹Play 兼容服务
- **mpv 引擎**:备用高兼容性引擎,基于 libmpv,支持更多编解码格式 - 按优先级有序故障回退,数据源严格隔离
- 播放失败时自动提供引擎切换建议,支持手动一键切换 - 自动匹配、手动搜索、本地弹幕、LRU 缓存
- 切换引擎时自动保持播放进度 - 三端支持(手机 / TV / Windows
- 统一 User-Agent`Entryway/{version} (android; {api})`
### ⏩ 播放控制 ### 💿 实验性 DVD / Blu-ray ISO
- **倍速播放**0.1x ~ 5.0x 滑动条 + 快速预设(0.5x / 1.0x / 1.5x / 2.0x / 3.0x - 未加密原盘本地与远程播放
- **长按快速倍速**:长按屏幕进入手动短时间高速播放 - 不支持时自动回退服务器转码
- **手势控制**:左右滑动快进快退、左侧上下滑动调亮度、右侧上下滑动调音量
- **画面比例**:循环切换适应/填充/16:9/4:3 等比例模式
- **锁屏**:锁定控制界面,防止误触
- **剧集导航**:上一集/下一集,播放列表(仅剧集)
### 🔧 mpv 引擎专属 ### 📺 Android TV
- **解码模式切换**:SW(软解)/ HW(硬解)/ HW+(硬解+拷贝)一键循环切换 - 遥控器全键盘搜索、二维码手机输入
- 字体自动加载,支持字幕渲染 - 完整弹幕、扫码录入服务器、首页缓存兜底
### 🔊 高级音频 ### 🪟 Windows
- Apple Spatial Audio 空间音频检测与启用 - Flutter + MediaKit (libmpv) + Rust 弹幕引擎
- HDR / Dolby Vision 能力检测与自动适配 - 多服务器、收藏、详情、跨服搜索、离线下载
- Chromecast/DLNA 投屏、Inno Setup 安装器
### 🎨 全局主题系统 ### 🎨 设计与国际化
- 支持 **跟随系统** / **浅色** / **深色** 三种主题模式 - 空间化 / 玻璃态视觉语言,Material 3 动态配色
- 基于 Material 3 动态配色方案 - 完整中文(简体/繁体)和英文本地化
### 🌐 完整国际化
- 界面支持中文(简体/繁体)和英文
- 50+ 影视类型名称客户端翻译
- 根据系统语言自动切换
### 📥 离线下载 ### 📥 离线下载
- 队列化下载管理,支持暂停/恢复/取消 - 队列化管理,批量下载,存储空间预估
- 季度/剧集批量下载,下载前显示存储空间预估 - 无网络时自动切换离线内容模式
- 无网络时自动切换到离线内容模式
## 技术栈 | Tech Stack ## 平台要求 | Requirements
| 类别 | 技术 | | 平台 | 最低要求 |
|------|------| | --- | --- |
| **语言** | Kotlin 2.0, Coroutines, Flow | | Android 手机版 | Android 8.1 (API 27) |
| **UI** | Jetpack Compose + Material 3 + Navigation Compose | | Android TV 版 | Android 8.1 (API 27) |
| **网络** | Retrofit 3 + OkHttp 5 | | Windows | Windows 10 x64 |
| **图片** | Coil 3 |
| **播放器** | Media3 ExoPlayer + FFmpeg 扩展 / libmpv (双引擎) |
| **存储** | SharedPreferences + DataStore |
| **构建** | Gradle 9.4, AGP, KSP |
## 贡献 | Contributing ## 更新检测 | Update Check
欢迎提交 Issue 和 Pull Request。较大的功能开发建议先开 Issue 讨论范围 客户端内置更新检测,优先从 Gitea 获取最新版本,连接失败时自动降级到 GitHub
## 源码仓库 | Source Code
- **GitHub**[github.com/JackYucongjia/Entryway](https://github.com/JackYucongjia/Entryway)
- **Gitea**[gitea.yamby.cn/yusheng/Entryway](https://gitea.yamby.cn/yusheng/Entryway)
## 许可证 | License
本项目基于 MIT 许可证开源。
手机端弹幕实现参考了 MIT 许可的 [AimesSoft/NipaPlay-Reload](https://github.com/AimesSoft/NipaPlay-Reload)。
Windows 客户端基于 NipaPlay-Reload `v1.10.13` 构建,保留上游 MIT 许可。
+111 -24
View File
@@ -1,36 +1,123 @@
# Entryway Mobile 0.18.0 / TV 0.16.1 / Windows 0.15.0+34 # Entryway v0.24.0
批次 Android 手机Android TV Windows 三端同批发布。各端应用版本不同,全局标签 `v0.18.0` 仅为本批次 ID 本批次 Android 手机版公开持续发布切换到 **Preview** 构建,并集中发布界面流畅度、隐私服务器保护、缓存搜索、Dolby Vision 与 mpv 稳定性等更新。Android TV Windows 本批次没有代码变化,继续复用上一版已验证安装包
## 版本与校验 > Preview 是 release 形态的非 debuggable 构建,启用 R8、AOT 与 Baseline Profile,但仍使用历次公开 Debug 包相同的调试证书,现有用户可直接覆盖安装。它属于公开持续发布渠道,不是正式 Release 构建。
| 平台 | 应用版本 | 构建号 | 文件名 | SHA-256 | ## 版本信息
| --- | --- | --- | --- | --- |
| Android Mobile | 0.18.0 | 37 | entryway-release-0.18.0.apk | `e3c1813d37aebee4612db0436e22a8894236e0d04dcb9e787a9b8f11b39e07fd` |
| Android TV | 0.16.1 | 36 | Entryway-tv-release-0.16.1.apk | `8bb5d9a2787755469af3cc66839c32be318035d353f22a66620798026ba6953c` |
| Windows x64 | 0.15.0 | 34 | Entryway_0.15.0+34_Windows_x64_Setup.exe | `e9e45536fe981d117f8f261fe82a4e1fbd5b01a1ff515dfdc110253b8992f21b` |
> Windows 安装包为**未签名**产物,首次运行可能触发 SmartScreen 提示,需手动确认。 | 平台 | 应用版本 | 构建号 | 渠道 | 安装包 | SHA-256 |
| --- | --- | ---: | --- | --- | --- |
| Android 手机版 | 0.24.0 | 45 | Preview | `entryway-preview-0.24.0.apk` | `413dc569c88b3bff6140609d584d3b826a536f85f2c40ddda57008c839c47ae0` |
| Android TV 版 | 0.18.1 | 39 | Debug | `Entryway-tv-debug-0.18.1.apk`(沿用 `v0.23.0` | `f9a7ef9f71a92df4c0469e75c1e36863062631a9735da417b7b237d54b97e4ba` |
| Windows x64 | 0.18.0 | 37 | Debug | `Entryway_0.18.0+37_Windows_x64_Setup.exe`(沿用 `v0.23.0` | `b744a11a186350461dc6b4143df1fd5ee833bcc0ae1df6bff4339e1824333477` |
## Android Mobile 0.18.0 ## Android 手机版 0.24.0
- 详情页多版本影片可选择要播放的版本,选择贯穿播放全链路(Emby / Jellyfin 均生效)。 ### Preview 构建与界面性能
- 音轨/字幕弹窗内可按文件调节音频延迟和字幕延迟,按媒体项持久化。
- 带样式 ASS 字幕在 ExoPlayer 下提示样式降级,并提供「覆盖字幕自带样式」开关;PGS/VOBSUB 图形字幕单独提示。
- 完整简体中文 / 英文本地化;语言切换改用应用自有存储,切换即时生效。
- 修复登录页浅色模式文字不可见;修复字幕样式设置需重开播放器才生效;去除详情页海报毛玻璃。
## Android TV 0.16.1 - 公开持续发布从 Debug 切换到 Preview:关闭调试模式并启用 R8、AOT 与 Baseline Profile,减少 Debug 构建对启动和界面性能的限制。
- 首页滚动视差、图片阴影与播放器进度更新改为更轻量的绘制和局部状态更新,避免整页或整层控件逐帧重组。
- 首页数据由高频主线程轮询改为数据就绪后主动推送。
- 页面切换统一为约 300 毫秒的方向性转场,精简重复淡入、缩放和多组按压弹簧动画。
- 完善手机、Medium 平板与 Expanded 平板的布局规范。
- 详情页对含多个版本的影片显示版本切换按钮,所选版本贯穿播放链路。 ### 搜索与首页缓存
- 注:本版 TV 多版本选择尚未在电视端真机充分验证。
## Windows 0.15.0 - 搜索页优先从各服务器的 Home Snapshot 缓存立即返回结果,后台实时搜索完成后再替换。
- 慢服务器或暂时异常的服务器不再让搜索页长期空白,实时搜索失败也不会清空已有缓存结果。
- 读取其他服务器缓存时不切换当前活动服务器;首页缓存更新后同步刷新搜索缓存。
- 首页轮播支持直接展示海报,减少横图裁切造成的信息损失。
- 首页各分区新增“查看全部”浏览页。 ### 隐私与稳定性
- 更新检测与安装策略完善。
## 已知问题 - 私密服务器新增密码与生物识别保护,并确保进入隐私设置前也需要完成验证。
- 修复系统备份排除规则未覆盖 DataStore,导致登录凭据与服务器列表可能被纳入系统云备份的问题。
- 修复通知权限被拒绝或撤销后,下载通知可能导致崩溃的问题。
- 修复详情页重复 artwork tag 可能触发崩溃的问题。
- 修复登录页部分小米设备键盘安全区过大,以及 Logo 四周出现白色边线的问题。
- 修复深色主题下卡片出现不协调青色描边、语言切换后设置项未刷新及服务器标签中文缺失的问题。
- 图形字幕(PGS/VOBSUB)在 ExoPlayer 下颜色不可调,属播放器框架限制,可切换 mpv 内核。 ### 播放器、Dolby Vision 与 mpv
- Windows 安装包未签名。
- 修正 Dolby Vision Profile 5 的色彩与播放路径,根据 Profile、基底层和设备解码能力选择合适策略。
- mpv 对需要修正的 Dolby Vision 内容启用 `gpu-next` 与软件解码,普通内容恢复默认路径;ExoPlayer 使用设备解码器能力判断 Dolby Vision 支持。
- 新增播放器高级配置:音频解码、gpu-next、快速解码、立体声降混、图片字幕拉伸、不受信任证书、mpv 详细日志、时钟、方向、HDR 色彩模式与最高刷新率等。
- 补齐此前只作用于 ExoPlayer 的 mpv 设置,包括 `vd-lavc-dr``target-colorspace-hint``gpu-api`,并让全屏/最大化画面设置在 mpv 加载完成后正确生效。
- 修复部分 115/云盘 302 直链大体积 MKV 在 mpv 读取尾部索引时遇到 Range 403 后直接 EOF、跳片尾或进入下一集的问题;连接失败后会在实际请求层重建连接。
- 新播放加载动画替换旧实现,并为 Preview/R8 增加 mpv JNI 保留规则。
- 播放进度或播放完成后会刷新首页继续观看等相关区域,同时保留现有缓存策略。
## Android TV 0.18.1
- 本批次无代码变化,沿用 `v0.23.0` 的 Debug APK。
## Windows x64 0.18.0+37
- 本批次无代码变化,沿用 `v0.23.0` 的 Debug 安装包。
- Windows 端正在重构,预计 **2026 年 8 月 17 日**正式发布新版。
- 当前安装包未进行代码签名,SmartScreen 可能显示未知发布者提示。
## 兼容性与构建信息
- Android 手机和 TVAndroid 8.1API 27)及以上。
- WindowsWindows 10 或更高版本,x64。
- 手机版构建命令:`./gradlew :app:assemblePreview`
- 手机版 Preview 签名证书 SHA-256`bbd12fc3757222334f11f22a238012a4745a4423ac07b9dd76b3e887691505c6`
- 源码提交:`f7fdc71bb1134973121118930995f1a7f2895941`
- 源码标签:`v0.24.0`
- 自动验证:`:app:assemblePreview``:app:testDebugUnitTest``:core:testDebugUnitTest``:data:testDebugUnitTest` 与官网 65 项 Node 测试均通过。
### 已知项
当前随包 Baseline Profile 主要覆盖冷启动与登录页;已登录后的首页、详情页与播放器基准数据仍需后续在真实服务器环境中继续采集。
---
# Entryway v0.23.0
本批次为 Android 手机版弹幕曲线和全屏显示更新,采用 Debug 持续发布规则;Android TV 和 Windows 无代码变化,沿用已验证安装包。各端应用版本独立维护:Mobile `0.23.0`、TV `0.18.1`、Windows `0.18.0+37`
> 本批次是持续发布用的 **Debug 版本**,不是正式 Release 版本。正式版将在用户明确确认后单独构建和发布。
## 版本信息
| 平台 | 应用版本 | 构建号 | 安装包 | SHA-256 |
| --- | --- | ---: | --- | --- |
| Android 手机版 | 0.23.0 | 44 | `entryway-debug-0.23.0.apk` | `3348b2b4de53e8bf3d14e5a154ee774cbc7db37cd5a9a57c0cfd8a47f31dd523` |
| Android TV 版 | 0.18.1 | 39 | `Entryway-tv-debug-0.18.1.apk`(沿用 `v0.22.0` | `f9a7ef9f71a92df4c0469e75c1e36863062631a9735da417b7b237d54b97e4ba` |
| Windows x64 | 0.18.0 | 37 | `Entryway_0.18.0+37_Windows_x64_Setup.exe`(沿用 `v0.22.0` | `b744a11a186350461dc6b4143df1fd5ee833bcc0ae1df6bff4339e1824333477` |
## Android 手机版 0.23.0
### 弹幕曲线样式
- 弹幕设置新增“弹幕曲线样式”开关。
- 关闭时使用平滑曲线,适合观察整段视频的弹幕密度趋势。
- 开启时使用峰谷曲线,以更细的时间采样和折线表现突出弹幕密集时刻与剧情高潮。
### 全屏弹幕显示
- 修复播放器隐藏控制栏进入全屏后,第一行弹幕被顶部区域遮挡的问题。
- 控制栏显示时继续保留完整避让距离;控制栏隐藏时仅保留必要顶部安全区,减少画面上方空白。
## Android TV 0.18.1
- 本批次无代码变化,沿用 `v0.22.0` 的 Debug 安装包。
## Windows x64 0.18.0+37
- 本批次无代码变化,沿用 `v0.22.0` 的 Debug 安装包。
- 安装包未进行代码签名,SmartScreen 可能显示未知发布者提示。
## 兼容性
- Android 手机和 TVAndroid 8.1API 27)及以上。
- WindowsWindows 10 或更高版本,x64。
- Android 安装包使用项目 1.0 前的 Debug 变体和证书签名,Windows 安装包未签名。
## 构建信息
- 源码提交:`8d6778b42b7a5f351921248d3a3debde99142aad`
- 源码标签:`v0.23.0`
- 自动验证:`:app:assembleDebug`、官网静态页 65 项测试