ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

my-tv(我的电视)更新日志深度解读:从 v1.2.3 到 v2.1.0 的功能演进与源码实现分析

my-tv(我的电视)更新日志深度解读:从 v1.2.3 到 v2.1.0 的功能演进与源码实现分析 音视频直播【免费下载链接】my-tv我的电视 电视直播软件安装即可使用项目地址https://gitcode.com/GitHub_Trending/my/my-tv点击查看免费下载本文以仓库 HISTORY.md 为骨架逐版本梳理我的电视my-tv这款电视直播软件从 v1.2.3 到 v2.1.0 的完整演进脉络并结合仓库源码播放器、网络请求、遥控器按键处理、设置页等还原每一个关键更新的真实实现。读完本文你将理解my-tv 如何围绕播放稳定性、遥控器交互、频道内容、设置个性化、在线升级五条主线持续迭代以及各版本号背后对应的源码位置与设计取舍。一、版本总览一条更新日志看穿项目十年打磨HISTORY.md记录了 my-tv 自 v1.2.3 以来的所有版本发布记录时间跨度覆盖从早期能看就行到后期稳定、好用、可升级的完整过程。综合全部条目可以把整个更新历程归纳为五条演进主线演进主线典型版本涉及源码播放稳定性卡顿、黑屏、闪退、播放失败、恢复播放v1.2.x ~ v2.1.0Request.kt、PlayerFragment.kt遥控器与触屏交互按键、手势、频道号、菜单v1.3.x ~ v1.8.xMainActivity.kt、ChannelFragment.kt频道内容CCTV、地方、港澳台、国际、8K、EPGv1.3.1 ~ v2.0.4TVList.kt、MainFragment.kt设置与个性化时间、开机启动、频道反転、数字选台v1.4.x ~ v2.0.9SP.kt、SettingFragment.kt、setting.xml在线升级与设备兼容安卓 4/5、天貓魔盒、自启v1.2.7 ~ v2.1.0UpdateManager.kt、BootReceiver.kt值得注意的是HISTORY.md在 v2.1.0 之后明确标注了以下已不可用即 v2.0.9 及更低版本的服务端通道已失效用户必须升级到 v2.1.0 及以上才能正常播放。这与仓库根目录 version.json 中version_name: v2.1.0的当前版本号相互印证——v2.1.0 是仓库当前维护的最新版本。二、最新版本解读v2.1.0 恢复播放最新版 v2.1.0 只有一个更新条目恢复播放恢复播放指的是当应用从后台被切回前台、或播放中途发生异常后播放器能够自动续播当前频道而不是停在黑屏或错误状态。这在源码中有两处直接体现PlayerFragment.kt 的onStart()中如果player.isPlaying false会自动调用prepare()与play()恢复播放日志输出replay播放出错时onPlayerError会调用tvViewModel?.changed()触发切换/重试见 PlayerFragment.kt。三、稳定性主线从修 368到通用版/专用版的兼容策略更新日志中反复出现修复播放失败修复卡顿解决黑屏修复闪退等条目这是全项目迭代频率最高的主题。结合源码可以还原其背后的三套稳定性机制3.1 多级重试机制Request.kt 中为每个频道封装了完整的重试策略retryTimes/retryMaxTimes整体请求重试计数tokenYSPRetryTimes/tokenYSPRetryMaxTimestoken 获取重试tokenFHRetryTimes/tokenFHRetryMaxTimes凤凰卫视鉴权重试needToken/mustToken控制哪些频道必须拿到 token 才能播放。fetchData()Request.kt会根据频道是否needToken、是否需要needAuth走不同的请求链路任何一环失败都会在次数限制内自动重试。这正是更新日志中增加重试减少因网络问题导致的播放失败v1.3.2、修复播放失败的问题v1.5.x 系列的实现基础。3.2 368问题的真相日志中多次出现修复368v1.7.4、处理368可能失败的情形v1.3.0、支持3、6、8v1.2.9、解决部分情况下3、6、8等频道无法播放的问题v1.6.9。结合 TVList.kt 可以看到CCTV3 综艺、CCTV6 电影、CCTV8 电视剧三个频道在频道表中的mustToken true见 TVList.kt 中 CCTV3 定义即它们必须通过云视听YSPtoken 鉴权链路才能拿到播放地址鉴权失败的概率显著高于普通频道。可以推断所谓368正是这三个特殊频道的代称项目围绕它们的鉴权链路做了大量专项修复fetchAuth/fetchVideo中的 token 分支即为此设计见 Request.kt。3.3 通用版与安卓5及以上专用的分流策略从 v1.4.2支持安卓4、v1.2.7测试安卓6.0以下版本到后期大量安卓5及以上专用版本并存说明项目在某个阶段采用双版本发布策略通用版兼容性优先覆盖老设备安卓5及以上专用版性能与画质优先面向主流设备。例如 v1.5.9解决天猫魔盒闪退问题对应 PlayerFragment.kt 中Utils.isTmallDevice()对天猫设备的特判分支改用SurfaceView SimpleExoPlayer渲染、v1.2.7此版本是为了测试安卓6.0以下版本如之前可以正常运行请勿安装都体现了对低端设备的细致兼容。四、交互主线遥控器按键、手势与频道号选台更新日志中关于交互的条目密度极高v1.7.8 是一个分水岭一次引入了四项交互更新遥控器左键打开频道列表对应 MainActivity.kt 的KEYCODE_DPAD_LEFT分支遥控器右键打开设置菜单对应 MainActivity.kt 的KEYCODE_DPAD_RIGHT分支频道列表空白处点击隐藏频道列表对应showChannel()/switchMainFragment()中对mainFragment显隐的控制MainActivity.kt频道号优化 / 增加时间显示分别对应 ChannelFragment.kt 与TimeFragment。4.1 数字选台的完整按键矩阵MainActivity.kt 的onKeyDown()是一个完整的遥控器按键路由表数字键 0~9调用showChannel(N)输入频道号DPAD_UP / CHANNEL_UP上一频道受SP.channelReversal反转控制channelUp()见 MainActivity.ktDPAD_DOWN / CHANNEL_DOWN下一频道ENTER / DPAD_CENTER切换主界面频道列表BACK / ESCAPE两次返回退出再按一次退出 ToastMainActivity.ktMENU / SETTINGS / BOOKMARK / HELP打开设置菜单。4.2 频道号输入的 3 秒窗口ChannelFragment.kt 实现了数字选台的经典交互第一次按数字键显示当前输入并启动 3 秒delay 3000倒计时3 秒内再按第二个数字立即执行换台play(channel - 1)超过 3 秒未输入自动隐藏频道号浮层并复位输入状态。这解释了 v1.4.610以下频道不再需要先按0ChannelFragment中channelCount 2的判断允许单位数频道直接换台以及 v1.4.8频道号从1开始CCTV5为18MainActivity.kt 中tvViewModel.getTV().id.plus(1)展示频道号从 1 起算。4.3 手机端手势除遥控器外MainActivity.kt 的GestureListener提供了触屏交互单击切换主界面/频道列表双击打开设置菜单对应 v1.6.7手机双击打开配置上下滑动上一频道/下一频道onFling中根据velocityY正负调用prev()/next()。五、内容主线CCTV、地方台、港澳台与国际频道的扩张更新日志中频道内容的扩张脉络清晰可循v1.3.1增加 CCTV 8K 超高清频道、国际频道栏目v1.4.8增加天津卫视、新疆卫视提高 CCTV6 清晰度v1.5.8增加兵团卫视v1.6.x增加 CETV1、凤凰卫视增强画质、增加 EPGv2.0.4包含国际频道v2.0.3不包含国际频道随后 v2.0.4 又恢复。这些变更最终沉淀在 TVList.kt 的频道表中。当前表结构为四个分组央视含 CCTV1~CCTV17、CCTV4K/8K、风云剧场等付费频道、地方东方/湖南/江苏/浙江卫视等、港澳台凤凰卫视资讯台/中文台/香港台、国际CGTN 及其多语种频道。每组频道的ProgramType决定了其数据来源Y_PROTO云视听 protobuf 接口Y_JCE腾讯 JCE 接口F凤凰卫视接口。对应 EPG 节目单的获取分流在 MainFragment.kt 的updateEPG()与 Request.kt 的fetchYJceEPG()/fetchYProtoEPG()/fetchFEPG()三个方法中实现正是 v1.7.6部分频道增加节目单的源码体现。六、设置主线从菜单到完整配置体系6.1 设置菜单的引入与演进v1.3.4 / v1.3.3菜单3秒钟后自动关闭——对应 MainActivity.kt 的hideSettingRunnable 与settingDelayHide()v1.6.3延迟菜单自动关闭时间v1.8.0设置中增加退出按钮——对应 SettingFragment.kt 的finishAffinity()v2.0.5设置页增加恢复默认按钮目前只用于同步系统时间。6.2 设置项的完整清单与 SP.kt 一一对应当前设置页setting.xml共四个开关全部持久化在 SP.kt 的 SharedPreferences文件MainActivity中设置项SharedPreferences 键默认值更新日志出处用途频道反转channel_reversalfalsev1.4.4 / v1.4.3上下键换台方向反转数字选台channel_numtruev1.4.5是否启用频道号选台时间显示timetruev1.7.5 / v1.7.8屏幕角落时间显示开机启动boot_startupfalsev1.6.4 / v1.6.3开机自启v2.0.5 起可恢复默认其中开机启动开关直接由 BootReceiver.kt 消费系统开机广播到达时若SP.bootStartup true则以NEW_TASK标志拉起MainActivity。这解释了 v1.6.x 中默认关闭开机启动的条目——避免无授权自启。README 也提示无法自启的设备斐讯 N1 盒子等兼容性限制。6.3 换台反转的实现细节SP.channelReversal在 MainActivity.kt 的channelUp()/channelDown()中被读取当开启反转时CHANNEL_UP实际调用next()CHANNEL_DOWN实际调用prev()。此外 v1.2.4 还调整了滑动换台方向上一个频道下滑下一个频道上滑MainActivity.kt。七、升级主线在线升级与以下已不可用的启示v1.6.7自动更新v1.9.4 / v1.9.6 / v1.9.8持续优化在线升级。在线升级由 UpdateManager.kt 实现完整流程为设置页点击检查版本OnClickListenerCheckVersion见 SettingFragment.ktcheckAndUpdate()请求发布信息将release.c远程 versionCode与本地versionCode比较UpdateManager.kt有新版则弹确认框用户确认后通过系统DownloadManager下载 APK文件名形如my-tv-v2.1.0.apk下载完成后DownloadReceiver触发系统安装界面UpdateManager.kt。正是服务端随时可能停更的架构现实使得 HISTORY.md 中 v2.0.9 及以下被标记为以下已不可用也呼应了 README 的提醒本项目可能随时终止请大家谨慎使用建议使用官方渠道进行观看。八、体验细节16:9 比例、黑屏修复与信息显示更新日志中还有一批容易被忽略的体验细节条目源码中都留有对应实现固定视频比例 16:9v1.2.3PlayerFragment.kt 的aspectRatio 16f / 9f与onVideoSizeChanged中的宽高修正逻辑PlayerFragment.kt兼容 16:10 等分辨率v1.2.8ChannelFragment.kt 在创建时根据屏幕比例计算边距将频道号浮层限制在 16:9 安全区内延长频道信息显示时间、增加信息长度v1.8.4对应InfoFragment与 ChannelFragment.kt 的delay 3000自动隐藏机制隐藏全面屏底部小横条 / 全屏v1.2.3、v1.9.0MainActivity.kt 中FLAG_KEEP_SCREEN_ON、FLAG_FULLSCREEN、SYSTEM_UI_FLAG_HIDE_NAVIGATION三连设置播放相同频道不重复加载v1.2.4MainFragment.kt 的check()中通过lastVideoUrl去重判断频道列表样式切换网格/行v1.7.2、v2.0.0对应SP.grid键SP.kt重启后生效。九、版本速查表v1.2.3 ~ v2.1.0为便于检索将 HISTORY.md 全部版本条目整理为速查表按发布时间倒序版本适用范围核心变更v2.1.0通用恢复播放当前最新版v2.0.9通用修复部分设备闪退修复设置页显示不全v2.0.5通用设置页增加恢复默认用于同步系统时间v2.0.4通用修复不能播放包含国际频道v2.0.3通用修复不能播放不包含国际频道v2.0.0通用解决卡顿网格样式空白处点击退出频道列表样式切换失效v1.9.8 / v1.9.6通用优化在线升级、可能状态错误v1.9.4通用修复默认时间不显示设置页居中频道号和时间对齐v1.9.2通用修复一个重试错误v1.9.0通用减少视频播放失败全面屏手机居中v1.8.8通用样式优化v1.8.6通用增加错误显示节目预告优化频道列表单击切换频道v1.8.4通用解决部分黑屏延长频道信息显示时间与长度列表间距调整v1.8.2通用修复无法播放v1.8.0通用修复返回键无法退出设置增加退出按钮非电视样式低版本闪退v1.7.8通用修复播放卡顿增加时间显示频道号优化左键列表/右键设置空白处隐藏v1.7.6通用临时去掉部分频道部分频道增加节目单v1.7.5安卓5修复卡顿时间显示频道号优化退出按钮v1.7.4通用修复368v1.7.3安卓5临时去掉部分频道部分频道节目单左键节目列表/右键菜单v1.7.2通用节目列表网格/行样式切换重启生效v1.7.1安卓5修复设置页更新闪退凤凰卫视回归解决368v1.7.0通用网络请求优化v1.6.9安卓5去掉港澳台和国际频道解决 3/6/8 无法播放部分启动黑屏v1.6.8通用修复部分设备崩溃凤凰卫视无法播放v1.6.7安卓5手机双击打开配置自动更新v1.6.6通用更新重庆卫视图标凤凰卫视增强画质、增加 EPGv1.6.5安卓5增加 CETV1 图标稳定性提升v1.6.4通用增加 CETV1、凤凰卫视默认关闭开机启动v1.6.3安卓5增加 CETV1凤凰卫视增强画质默认关闭开机启动延迟菜单关闭首次黑屏v1.6.2通用修复按键无效新的频道列表样式v1.6.1安卓5增加凤凰卫视v1.6.0通用春晚紧急修复v1.5.9安卓5解决天猫魔盒闪退v1.5.8通用修复央视6画质增加兵团卫视播放失败重试v1.5.7安卓5修复播放失败v1.5.6通用解决系统时间不对导致播放失败v1.5.5安卓5修复播放失败频道号/列表不自动消失v1.5.4通用修复播放失败v1.5.3安卓5APP 切换后继续播放优化重试逻辑v1.5.2通用修复频道号/列表不自动消失v1.5.1安卓5性能优化v1.5.0通用修复 APP 切换后无法继续播放v1.4.9安卓5同步 v1.4.8v1.4.8通用频道号从 1 开始CCTV5 为 18提高 CCTV6 清晰度天津/新疆卫视v1.4.7安卓5修复 CCTV13 卡住调整 CCTV 顺序v1.4.6通用10 以下频道无需先按 0v1.4.5安卓5数字选台配置v1.4.4通用优化图标显示增加换台反转v1.4.3安卓5支持频道反转配置v1.4.2通用支持安卓 4v1.4.1通用解决部分用户无法打开菜单v1.4.0通用解决个别高版本机型黑屏v1.3.9通用提高稳定性、连接速度v1.3.4 / v1.3.3通用部分错误提示用户菜单 3 秒自动关闭v1.3.2通用增加重试优化 bannerv1.3.1通用增加 CCTV 8K 超高清国际频道栏目v1.3.0通用处理 368 可能失败的情形v1.2.9通用支持 3、6、8v1.2.8通用兼容 16:10 等分辨率v1.2.7通用测试安卓 6.0 以下版本v1.2.6通用支持安卓 4.2解决部分频道无法播放切换恢复播放左右键不再切换源信息标题增大v1.2.5通用美化频道信息优化节目单获取v1.2.4通用改变换台滑动方向退出时退出播放器相同频道不重复加载暂时移除部分频道v1.2.3通用固定 16:9隐藏全面屏横条移除移动专区修复闪退更换图标和应用名十、结语从更新日志反推工程方法论通读 HISTORY.md 并对照源码可以发现my-tv 的迭代遵循着典型的直播类 App 生存法则播放是生命线播放失败、卡顿、黑屏、闪退四类问题贯穿全部版本最终沉淀为 Request.kt 中覆盖 token、鉴权、取流三个层次的重试框架兼容是护城河通用版与安卓 5 专用版并行、天猫魔盒特判、安卓 4.x 支持换来的是更广的设备覆盖交互要适配遥控器所有功能选台、菜单、列表、时间都必须在 D-pad 键位上可触达MainActivity.kt 的按键矩阵就是这份适配的最终形态内容随接口而变频道增减港澳台、国际、8K与以下已不可用的标注反映了直播源接口的强外部依赖因此 version.json 与 UpdateManager.kt 的在线升级机制成为保证可用性的关键一环。如果你正在研究如何在长周期内维护一个依赖外部直播源的电视应用或更新日志与源码之间的对应关系这份 HISTORY.md 结合源码是最直观的参考材料。赞分享音视频直播【免费下载链接】my-tv我的电视 电视直播软件安装即可使用项目地址https://gitcode.com/GitHub_Trending/my/my-tv点击查看免费下载相关推荐my-tv-0版本更新日志深度解读从v1.0.0到v1.3.9.8的功能演进之路my tv 0版本更新日志深度解读从v1.0.0到v1.3.9.8的功能演进之路 想要了解这款功能强大的电视网络视频播放软件是如何一步步完善的吗my tv音视频视频word_cloud 项目变更日志深度解读从 1.2.1 到 1.9.1 的核心功能演进与源码实现word_cloud 项目变更日志深度解读从 1.2.1 到 1.9.1 的核心功能演进与源码实现 导读 本文以 word_cloud 官方变更日志 doc/数据可视化数据分析h5-Dooring 版本更新日志深度解析1.92 到 1.99 的功能演进与源码实现h5 Dooring 版本更新日志深度解析1.92 到 1.99 的功能演进与源码实现 本文以 h5 Dooring 官方更新日志 doc/zh/guide前端低代码上一篇PySpark SQL Column API 完全指南从列构造、表达式运算到源码级实现剖析下一篇nginx-ui 自签名证书体验增强设计解析统一列表输入、续期提示与 Name 必填校验创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表