diff --git a/.gitignore b/.gitignore index c64162a..418a459 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ build/ .gradle/ local.properties -*.apk .idea/ +*.apk +!apk/*.apk diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..c6a6b8f --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,118 @@ +# 更新日志 + +> 包名:`com.iptv807.tv` | Android 5.0+ +> 每个版本的 APK 都在 [`apk/`](apk/) 目录与 [Releases](../../releases) 中保留。 + +--- + +## v9.2.0(2026-10-08)→ ✨新功能 / 🐛修复 +- 🐛 从设置页或桌面返回时,直接**重连当前流**(不再依赖 `play()`,避免画面定格) +- ✨「▶ 继续播放」按钮改为强制重连同一路流,恢复更快更可靠 + +## v9.1.0(2026-10-08)→ 🐛修复 +- **修复切台看不到「正在加载」和计时**:切台时旧频道仍在播放,它一有缓冲波动就触发播放回调,把刚弹出的加载遮罩立刻隐藏了(经常一闪而过甚至看不到) +- 加 `awaitingStart` 标记:**只有这次要播的新频道真正起播**才收起加载提示,旧频道的回调不再影响 +- 加载遮罩显示时 `bringToFront()`,保证不被其它浮层挡住 + +## v9.0.0(2026-10-08) +- **修复设置页/商店页看不到选中项**:原来用 `setBackgroundColor` 给按钮设固定底色,把系统自带的焦点高亮覆盖掉了 +- 所有可操作项改为**获得焦点即变蓝**(StateListDrawable):卡密输入框、激活、支付成为会员、开机自启动开关 +- 商店页同样处理,并改为**遥控手动导航**:上下选套餐、左右切支付宝/微信、OK 购买;选中的套餐行蓝底 +- 设置页内容变长,加了滚动容器,下面被挡住的项也能滚到 + +## v8.9.0(2026-10-08) +- **修复「换不了台」**:上一版把方向/确认键交给系统焦点处理,在部分电视盒子上焦点根本进不了列表 → 按键全部空转 +- 改为**完全手动的选择模型**:高亮由 App 自己画(选中行蓝底白字),上下移动、左右切列、OK 确认全部由按键逻辑直接处理,**不再依赖系统焦点机制** +- 面板打开时吞掉其它按键,避免误触发换台;分组列上下移动时确认才会切换("⚙ 设置"停在上面不误进) +- 上下移动频道时会顺手预取那一行的源 + +## v8.8.0(2026-10-08) +- **实测源站瓶颈**:`m.iptv807.com` 抓播放页需 1~7 秒,且失败率约 50%(半路断连/超时);token **与频道绑定**(换频道 id 复用同一 token 返回 404),所以每次切到没打开过的频道都必须抓一次源 +- **修复"切台反而接不了"**:解析原用全局锁,后台预取占锁时用户切台要排队 → 改为**每频道独立锁** +- 缓存有效期 8 分钟 → **30 分钟**(已打开过的频道切回秒开) +- 预取从「整组抓」改为「只抓当前高亮的那一个频道」(1.2 秒去抖动),不再压垮源站 +- 全部线路失败时**自动强制刷新源再试一轮**(应对缓存 token 过期) +- 加载提示显示频道名:`正在加载「TVB翡翠台」3 秒…` + +## v8.7.0(2026-10-08) +- **修复退出没有提示**:`AlertDialog` 在电视的全屏主题下创建失败(异常被兜底逻辑吞掉 → 直接退出、无提示) +- 退出确认改为**App 内自绘弹层**:半透明遮罩 + 卡片 + 「取消 / 退出」两个按钮,不依赖系统对话框主题 +- 按钮有焦点高亮(获得焦点变蓝),默认焦点放在「取消」上防误触;返回键 = 取消 + +## v8.6.0(2026-10-08) +- **修复遥控器无法在选台面板操作**:原因是面板打开时把方向键/确认键全拦截了,焦点根本进不了列表 +- 面板打开后只接管 返回 / MENU(收藏),**方向键与确认键全部交给列表自己处理** +- 频道列表与分组列表加**蓝色焦点高亮**(方向键经过的行变蓝),按 OK 即播放 +- 打开面板时焦点自动进入频道列表并定位到当前频道;选中分组后焦点自动跳到频道列表 +- 列表行改为白色文字、透明底(原来系统默认样式在暗色主题下几乎看不出选中) + +## v8.5.0(2026-10-08) +- **测试卡密:`88531`** —— 在设置页「卡密激活」输入即可,直接永久授权(本地判定,不走服务器),显示「测试卡:永久有效」 +- 可用于测试购买/时长逻辑,正式卡密流程不受影响 + +## v8.4.0(2026-10-08) +- 设置页新增「卡密激活」:输入框 + 激活按钮,验证通过后立即写会员状态 +- 从设置返回播放页立即生效(onResume 重新读取会员状态),无需重启 +- 激活链路已实测:生成月卡 → `/api/public/verify` 返回 valid / 月卡 / 30 天 / 到期时间 + +## v8.3.0(2026-10-08) +- **切台提速**:去掉切台前逐条线路预探测(原最大拖累,每条最长等 4 秒),改为直接开播 + 失败自动换线 +- 起播缓冲调小(适配直播流):`setBufferDurationsMs(1500, 12000, 500, 1000)` +- 打开选台面板时后台预取该组频道源,切台秒开 +- 加载提示带实时计时:`正在加载 N 秒,精彩继续…`(一直走到出画面) +- 播放期间屏幕常亮(FLAG_KEEP_SCREEN_ON) + +## v8.2.0(2026-10-08) +- 连滑两次退出前弹窗确认(退出 / 取消) + +## v8.1.0(2026-10-08) +- 连续滑动两次完全退出 App(1.5 秒内两次,位移>120px/0.8s 内判定);第一次滑动提示「再滑动一次退出应用」 + +## v8.0.0(2026-10-08) +- 修复从桌面返回画面卡住:`onResume` 自动续播 + 屏幕中央「▶ 继续播放」按钮(遥控 OK 可点,重连当前频道) + +## v7.9.0(2026-10-08) +- **修复套餐列表空白**:接口不返回 `status` 字段,原代码 `optInt("status")==1` 把 4 个套餐全过滤掉 +- 套餐按天数排序;无套餐时给出提示 +- 已验证下单链路:card-types → orders → orders/query 全部正常 + +## v7.8.0(2026-10-08) +- 抓源加 3 次重试(15s 连接 / 20s 读取),抗网络抖动 +- 失败自动重连(网络波动,正在重试 n/3)+ 内存/磁盘双缓存兜底 +- 缓存线路全失效时自动强制刷新源 + +## v7.7.0(2026-10-08) +- 加载提示文案改为「正在加载,精彩继续…」 + +## v7.6.0(2026-10-08) +- 按需求去掉加载计时(v8.3.0 已按要求加回) + +## v7.5.0(2026-10-08) +- 加载计时不再 12 秒后冻结成固定文字 +- 修复右上角「今日免費」计时不走动(无人累计用量) + +## v7.4.0(2026-10-08) +- 失败画面信息全开:版本号 + 逐条线路实测状态码 + token 片段 +- 播放错误 2004 = HTTP 状态码错误(非网络不通),用于区分故障类型 + +## v7.3.0(2026-10-08)★ 播放关键修复 +- **真根因**:混淆块里 `xx = yy` 复制语句导致取「第 2 个 32 位值」正好等于密钥 → 旧 token 替换失败 → 地址留着过期 token → 全部 404 +- 改为取「第一个不等于密钥」的值 + token 兜底替换 +- 解释了「台少时能播」:那是编译期写死的地址,不是运行时解析 + +## v7.2.0(2026-10-08) +- 默认播放 TVB翡翠台 +- 启动自检显示解析/拉流状态 + +## v7.1.0(2026-10-08) +- 去掉解密结果多做的一步 URLDecoder(把 `%2B` 解成 `+` → 服务端当空格 → 404) +- 去掉右上角「原生模式」标签 + +## v7.0.0(2026-10-08) +- 彻底删除网页兜底(按要求纯原生化) +- 打开即播,不再弹套餐/卡密页 +- 设置移到分组列表第一项(显眼位置) + +## v7.0.1 / v6.x / v5.x / v4.x / v3.x / v2.x / v1.x +> 早期版本(IPTV807-TV-v1.0.0 起至 v6.1.1)在与新版本交替时已被删除, +> 当时项目无 git 历史与备份,**无法恢复**。自 v8.3.0 起不再删除任何版本。 diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..84f902e --- /dev/null +++ b/LICENSE @@ -0,0 +1,27 @@ +MIT License + +Copyright (c) 2026 港澳台直播 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +补充说明:本软件仅是一个播放器外壳,不存储、不转播、不托管任何视频内容。 +所有频道数据均来自第三方公开网站,其版权归原权利人所有。使用者应自行承担 +使用风险,请在下载后 24 小时内删除。 diff --git a/README.md b/README.md new file mode 100644 index 0000000..fdc19c3 --- /dev/null +++ b/README.md @@ -0,0 +1,100 @@ +
+ +--- + +## ✨ 为什么值得装 + +| | 特点 | 说明 | +|---|---|---| +| 📺 | **55 个港澳台频道** | 香港 / 澳门 / 台湾 三大分组,含 TVB 翡翠台、明珠台、无线新闻、凤凰卫视、ViuTV、HOY TV、澳视、台湾综合台等 | +| 🎮 | **遥控器真的能用** | 数字键直接跳台;选台面板方向键移动,**选中行蓝底高亮**,按 OK 播放 | +| 🔀 | **10 条线路自动切换** | 一条不通自动换下一条,不用手动折腾 | +| 🔁 | **断了会自己回来** | 网络抖动自动重试;从后台/设置页返回自动重连画面;实在不行点「▶ 继续播放」 | +| ⭐ | **收藏常看频道** | 菜单键一键收藏,收藏分组置顶 | +| 🚀 | **秒开体验** | 高亮频道时后台悄悄备好源,按 OK 基本秒开;看过的频道切回是瞬间的 | +| 💡 | **贴心的电视细节** | 开机自启动、播放中屏幕常亮、连滑两次安全退出(带确认)、全屏无干扰 | +| 🆓 | **免费可用** | 每天免费 1 小时;需要长时间观看可购买月卡/季卡/永久 | + +## 📺 频道分组 + +| 分组 | 数量 | 代表频道 | +|---|---|---| +| 🌏 香港 | 20+ | TVB 翡翠台、TVB Plus、明珠台、无线新闻台、凤凰卫视中文台/资讯台、ViuTV、HOY TV、港台电视 31 | +| 🌏 澳门 | 6 | 澳视澳门、澳视综艺、澳视资讯、澳门莲花、澳門卫视 | +| 🌏 台湾 | 20+ | 台视、中视、华视、民视、公视、TVBS、东森、三立、八大、龙华系列 | + +> 频道数量与线路由源站动态提供,实际以 App 内列表为准。 + +## 🎮 遥控器操作 + +| 按键 | 作用 | +|---|---| +| **OK**(画面中) | 弹出选台面板 | +| **上下** | 移动选中项(蓝底高亮),停一下会自动预加载 | +| **左右** | 在「分组 ↔ 频道」之间切换 | +| **OK**(面板中) | 播放选中的频道 | +| **返回** | 收起面板 | +| **数字键** | 直接跳到对应频道号 | +| **菜单键** | 收藏 / 取消收藏当前频道 | +| **连滑两次** | 退出应用(有确认弹窗) | + +## 📥 下载安装 + +1. 下载最新 APK:[**港澳台直播-v9.2.0.apk**](apk/港澳台直播-v9.2.0.apk)(或到 [Releases](../../releases) 下载) +2. 传到电视盒子 / 电视 / 手机上 +3. 安装时允许「未知来源」应用 +4. 打开即播,默认进入 **TVB 翡翠台** + +- 包名:`com.iptv807.tv` | 支持 Android 5.0 及以上 | 横屏 +- TV 桌面会自动出现横幅图标(Leanback) + +## 💳 会员与激活 + +- **免费**:未激活也能看,每天 1 小时 +- **扫码购买**:设置 →「支付成为会员」→ 选套餐 → 支付宝/微信扫码 → **支付成功自动激活本机**(无需卡密) +- **卡密激活**:设置 →「卡密激活」→ 输入卡密 → 立即生效(无需重启) + +## 🛠 技术栈 + +``` +Kotlin · Android Media3 / ExoPlayer · Leanback 兼容 · 无第三方 SDK +``` + +- 播放源在 App 内实时解析(Referer / 302 跟随 / FLV 直播流),不依赖任何中转服务 +- 三级缓存(内存 / 磁盘)+ 每频道独立锁,网络抖动不影响切台 +- 播放中断自动换线路、缓存 token 过期自动刷新源 + +## ❓ 常见问题 + +**Q:某些频道要等几秒才出来?** +A:源站每次取流需要现拉一次页面,偶尔较慢;已经打开过的频道会缓存 30 分钟,切回去是瞬间的。 + +**Q:显示「全部线路失败」?** +A:多为该频道源站临时故障或网络抖动,App 会自动重试并刷新源;稍后再试或换一个频道。 + +**Q:从设置页返回画面不动了?** +A:已自动重连;若仍不动,屏幕中央点「▶ 继续播放」(遥控 OK 也可以)。 + +## ⚠️ 免责声明 + +- 本项目仅是一个**播放器外壳**,不存储、不转播、不托管任何视频内容。 +- 所有频道数据均来自第三方公开网站,版权归原方所有。 +- 本项目仅供个人学习与技术交流,请勿用于商业用途;请于下载后 24 小时内自行删除。 +- 若相关内容侵犯了您的权益,请提交 Issue,我们会及时处理。 + +## 📄 更新日志 + +见 [CHANGELOG.md](CHANGELOG.md) + +## 📜 许可 + +[MIT](LICENSE) diff --git a/apk/港澳台直播-v9.2.0.apk b/apk/港澳台直播-v9.2.0.apk new file mode 100644 index 0000000..80bacfb Binary files /dev/null and b/apk/港澳台直播-v9.2.0.apk differ diff --git a/assets/banner.png b/assets/banner.png new file mode 100644 index 0000000..7da7893 Binary files /dev/null and b/assets/banner.png differ diff --git a/assets/icon.png b/assets/icon.png new file mode 100644 index 0000000..c1d054f Binary files /dev/null and b/assets/icon.png differ