Compare commits

...
13 Commits
2 changed files with 109 additions and 118 deletions
+65 -118
View File
@@ -3,155 +3,102 @@
</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>
--- ---
## 最新版本 | Latest Release
**全局标签 `v0.19.0`**(各端应用版本独立)
| 平台 | 应用版本 | 构建号 | 下载 |
| --- | --- | --- | --- |
| Android 手机版 | 0.19.0 | 38 | [`entryway-release-0.19.0.apk`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.19.0/entryway-release-0.19.0.apk) |
| Android TV 版 | 0.17.0 | 37 | [`Entryway-tv-release-0.17.0.apk`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.19.0/Entryway-tv-release-0.17.0.apk) |
| Windows x64 | 0.17.0 | 36 | [`Entryway_0.17.0+36_Windows_x64_Setup.exe`](https://gitea.yamby.cn/yusheng/Entryway_Release/releases/download/v0.19.0/Entryway_0.17.0+36_Windows_x64_Setup.exe) |
> TV 版沿用 1.0 前的调试证书签名约定,Windows 安装包未签名;首次运行可能触发系统安全提示,需手动确认。
- **变更日志**[`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+ 影视类型名称客户端翻译
- 根据系统语言自动切换
### 📥 离线下载 ### 📥 离线下载
- 队列化下载管理,支持暂停/恢复/取消 - 队列化管理,批量下载,存储空间预估
- 季度/剧集批量下载,下载前显示存储空间预估 - 无网络时自动切换离线内容模式
- 无网络时自动切换到离线内容模式
## 项目架构 | Architecture ## 平台要求 | Requirements
``` | 平台 | 最低要求 |
entryway/ | --- | --- |
├── app/ # Android 应用层 | Android 手机版 | Android 8.1 (API 27) |
│ ├── ui/ | Android TV 版 | Android 8.1 (API 27) |
│ │ ├── activity/ # EntryWayActivity(主入口) | Windows | Windows 10 x64 |
│ │ ├── screens/
│ │ │ ├── dashboard/ # 首页、搜索、设置
│ │ │ │ ├── home/ # Dashboard + FeatureTab + 类目翻译
│ │ │ │ └── settings/
│ │ │ ├── servers/ # 服务器列表、管理、切换
│ │ │ ├── detail/ # 影片详情页
│ │ │ └── player/ # 双引擎播放器
│ │ │ ├── PlayerScreen # 播放器主界面 + 手势
│ │ │ ├── PlayerViewModel # 播放状态、引擎管理
│ │ │ ├── ControlsOverlay # 控制覆盖层 UI
│ │ │ └── MpvPlaybackEngine # mpv 引擎封装
│ │ ├── theme/ # Material 3 主题(支持深色/浅色)
│ │ └── splash/ # 启动页
│ └── util/ # 图片加载、日志
├── data/ # 数据层
│ ├── api/ # Jellyfin / Emby API 客户端
│ ├── model/ # 数据模型(BaseItemDto 等)
│ ├── repository/ # AuthRepository, MediaRepository
│ ├── preferences/ # AppPreferences, NetworkPreferences
│ └── network/ # 网络模块、连接检测
└── core/ # 核心工具层
├── auth/ # 认证状态管理
├── player/ # PlayerState、引擎类型、编解码器偏好
└── detail/ # 编解码器能力检测(HDR/Dolby/Spatial
```
## 技术栈 | Tech Stack ## 更新检测 | Update Check
| 类别 | 技术 | 客户端内置更新检测,优先从 Gitea 获取最新版本,连接失败时自动降级到 GitHub。
|------|------|
| **语言** | Kotlin 2.0, Coroutines, Flow |
| **UI** | Jetpack Compose + Material 3 + Navigation Compose |
| **网络** | Retrofit 3 + OkHttp 5 |
| **图片** | Coil 3 |
| **播放器** | Media3 ExoPlayer + FFmpeg 扩展 / libmpv (双引擎) |
| **存储** | SharedPreferences + DataStore |
| **构建** | Gradle 9.4, AGP, KSP |
## 构建 | Build ## 源码仓库 | Source Code
### 前置要求 - **GitHub**[github.com/JackYucongjia/Entryway](https://github.com/JackYucongjia/Entryway)
- **Gitea**[gitea.yamby.cn/yusheng/Entryway](https://gitea.yamby.cn/yusheng/Entryway)
- Android Studio (最新稳定版)
- JDK 17
- Android SDK API 36
### 构建步骤
```bash
# 克隆
git clone https://github.com/JackYucongjia/Entryway_Release.git
cd Entryway_Release
# 构建 Debug APK
./gradlew :app:assembleDebug
# 输出路径
# app/build/outputs/apk/debug/entryway-debug-*.apk
```
### 安装到设备
```bash
adb install -r app/build/outputs/apk/debug/entryway-debug-*.apk
```
## 贡献 | Contributing
欢迎提交 Issue 和 Pull Request。较大的功能开发建议先开 Issue 讨论范围。
## 许可证 | License ## 许可证 | License
本项目基于 MIT 许可证开源。详见 [LICENSE](LICENSE)。 本项目基于 MIT 许可证开源。
手机端弹幕实现参考了 MIT 许可的 [AimesSoft/NipaPlay-Reload](https://github.com/AimesSoft/NipaPlay-Reload)。
Windows 客户端基于 NipaPlay-Reload `v1.10.13` 构建,保留上游 MIT 许可。
+44
View File
@@ -0,0 +1,44 @@
# Entryway v0.19.0
本次发布将观看记录去重、真实媒体库数量和缓存优先加载策略统一到 Android 手机、Android TV 与 Windows。
## 版本信息
| 平台 | 应用版本 | 构建号 | 安装包 | SHA-256 |
| --- | --- | ---: | --- | --- |
| Android 手机版 | 0.19.0 | 38 | `entryway-release-0.19.0.apk` | `bb17beed3198f4ae13ab6aaf40f9bcb4c6251936035e2effb25ba7052914c589` |
| Android TV | 0.17.0 | 37 | `Entryway-tv-release-0.17.0.apk` | `b69e0a02de333a6f35fd0c5a167cbbd47aaf73e50637203a7fd6469f51b93066` |
| Windows x64 | 0.17.0 | 36 | `Entryway_0.17.0+36_Windows_x64_Setup.exe` | `88152926419a6f6dc29e3380cd9469c86d366a516aec56fe4a7013aa3e7a774f` |
## 跨端变化
- 新增可选的继续观看去重:合并不同媒体库中的同一内容,优先保留最近播放、进度更长的记录。
- “继续观看”和“我的媒体”提供查看全部入口与真实数量。
- 首页、全部页面和子媒体库统一采用持久化缓存优先策略。
- 子媒体库使用 30 分钟缓存;手动刷新始终绕过缓存,刷新成功后同步更新首页数量。
- 单个服务器或刷新请求失败时保留已有缓存,不再影响其他正常服务器。
## Android 手机版 0.19.0
- 增加观看记录去重设置。
- 修复从子媒体库返回首页后位置回到顶部的问题。
- 修复返回首页时重复刷新媒体库数量的问题。
- 增加“继续观看”和“我的媒体”全部页面。
## Android TV 0.17.0
- 移植“我的媒体库”全部页面、真实数量与缓存联动。
- 继续观看全部页面支持缓存。
- 子媒体库刷新后回写首页对应数量。
## Windows x64 0.17.0
- 同步跨端观看记录去重与媒体缓存策略。
- 完整继续观看列表支持分页及最多 2,000 条缓存。
- 修复分页延长缓存有效期和重复全量加载。
## 兼容性与已知问题
- Android 最低要求为 Android 8.1API 27)。
- TV release 变体沿用项目 1.0 前的调试证书签名约定。
- Windows 安装包未进行代码签名,SmartScreen 可能显示未知发布者提示。