
小米电视看片十分钟就跳屏保?真凶不在设置里
家里那台小米电视是 OLED 面板,平时用来看片。装了几个第三方影音应用之后出了个毛病:不管放什么,十来分钟画面自己跳进屏保,得按一下遥控器才回来。一部电影被打断好几回。
我先把设置项翻了一遍。跟时间有关的选项里,有一个「节能」的等待时间,最长只能选到 12 分钟,没有「关闭」这一项。照着设成最长,屏保照跳。这条路走不通,我换了个方向:不看设置项了,直接去问电视自己——它每次拉屏保,日志里都记着是谁下的手。
连电视翻日志这活我交给了 AI 助手。我做的只有两件事:在电视上打开调试开关、弹框出现时按遥控器点「允许」。剩下的命令、过滤日志、定位、改设置,都是它跑完的。
第一步,用遥控器把电视的调试口打开
小米电视的调试开关藏在两处,都在「设置」里:
- 设置 → 关于 → 产品型号,连着点 5 下,提示进入开发者模式
- 设置 → 账号与安全 → ADB 调试,打开
提醒一句:第二个开关要用遥控器点。有些场景下用鼠标点,看着也是打开的,底层并不生效。网上踩这个坑的人不少。
第二步,从电脑连过去
电视和电脑在同一个内网就行,不用插线。电脑上装一个 adb(安卓的调试工具,电视系统也是安卓底子,所以认它),然后:
1 | adb connect 电视的IP:5555 |
第一次连接,电视屏幕上会弹一个框,问要不要允许这台电脑调试,用遥控器选「允许」。连上后 adb devices 能列出设备就对了。电视的 IP 在电视的网络设置里能看到。
踩过的坑:同一内网里如果还开着手机的「无线调试」,扫 5555 端口会扫出两台设备来——我那次就把手机和电视一起扫出来了,得凭名字和端口分辨。
第三步,翻日志,真凶自己露头
这是整件事的关键一步。过滤电视日志里跟屏保相关的内容:
1 | adb logcat -d -v time | grep -iE "screensaver|burnin" |
跳出来的是这么三行:
1 | MiTVBurnInProtectionHelper: startScreenSaver reason:3rdNonTopActivity |
翻译成人话:小米系统里有个防烧屏服务(MiTVBurnInProtectionHelper,跑在 mitv.service 里),它的判断逻辑是——前台如果是第三方应用,并且 600000 毫秒(10 分钟)没收到遥控器按键,就认定屏幕上可能挂着不动的画面,于是拉起屏保。
10 分钟,跟我掐的时间对得上。
那看视频为什么也算「不动的画面」?因为这个服务只数遥控器按键,不看画面上有没有在动。日志里紧跟一条 updateKeepScreenOnFlag: true——播放器明明已经跟系统打过招呼「屏幕别关」,它照样在 10 分钟那一刻发广播。小米自家的播放应用在它的白名单里,所以只有第三方应用会中招:它不是针对你装的某个 App,是针对「不认识的 App」一刀切。
第四步,把屏保组件停用
广播最后是由一个系统包负责把屏保画出来的:
1 | com.mitv.screensaver |
它就是这个毛病的手。停用它:
1 | adb shell pm disable-user --user 0 com.mitv.screensaver |
--user 0 表示只对当前用户停用;disable 是停用,不是卸载,任何时候都能开回来。停用之后,防烧屏服务该发的广播还在发,但没人接了,变成空放。
顺手确认一下停用状态(能列出来就是停用成功了):
1 | adb shell "pm list packages -d | grep screensaver" |
代价也说清楚:待机屏保(智能屏保)这个功能就没了。你要是喜欢电视闲着时显示画报时钟,那这一步得掂量一下。
第五步,顺手把两个超时值调好
还有个我一开始改错的地方,写在这儿省你一轮:电视里有个设置项叫 screen_saver_timeout,我按经验把它从 12 分钟改成 24 小时,屏保照跳。看日志才明白,它只是电源服务的一个备用定时器,跟防烧屏服务那个 10 分钟的任务各管各的。这类问题先看日志,别先改设置。
既然不影响,顺手堵掉也行:
1 | adb shell settings put system screen_saver_timeout 86400000 |
另一项是熄屏超时(画面完全黑掉的时间),原来是 1 小时:
1 | adb shell settings put system screen_off_timeout 1200000 |
改成 20 分钟,是因为停用屏保后 OLED 面板就只剩这一层保护了,别让静止画面挂太久。这一项的前提是播放器在播放时会给系统打招呼「屏幕别关」——我实测 SmartTube 是这样的:把熄屏超时临时改成 3 分钟,放视频时屏幕一直亮着,一次没熄。所以这个值只管闲置场景,不影响看片。
如果你用的是网易爆米花或者 Kodi,发现播到 20 分钟画面黑了,把上面这条的值改成 3600000(1 小时)就行。这两个我没实测。
第六步,验证
改完不能只看设置项回显,得看行为。我的验收方式是两条:
一是行为:打开 SmartTube 放视频,遥控器放下、一下都不按(按任何键都会重置那个 10 分钟的计时器,一测就白测)。连续播了 22 分钟,跨过 10 分钟那条线,画面没跳屏保。
二是日志:再看一次 logcat,防烧屏服务仍然按时空放了一次屏保广播,但没有任何一次屏保组件被启动的记录(最后一次启动时间停在停用之前),也没有报错。
两条都过了,这事算完。
想退回去
1 | adb shell pm enable com.mitv.screensaver |
三条命令,把停用和两个超时值都恢复回去。
一个必须交代的代价
这台电视是 OLED 面板,出厂那个 10 分钟拉屏保的服务,本意是防烧屏。停用它之后,闲置时只剩熄屏超时(我设的 20 分钟)这一层保护,比原设计弱。
我的用法是:看完直接关机,不让它挂在那儿。你要是也不习惯让电视长时间停在某个静止画面上,这个代价值得换——毕竟它原来那个判断逻辑,是在你看视频的时候动手。
给想动手的人
- 电视这边:设置 → 关于 → 产品型号连点 5 下;设置 → 账号与安全 → ADB 调试打开(遥控器点)
- 电脑这边:装 adb,
adb connect 电视的IP:5555,电视上点「允许」 - 三条核心命令,按顺序粘:
1 | adb shell pm disable-user --user 0 com.mitv.screensaver |
改完记得按第六步验一遍,别只信回显。
结论
十分钟一跳的毛病没了,看片不再被打断。回头看,真正管用的只有一句命令,前面绕的那些圈是因为我一直在改「看起来相关」的设置项——直到把日志翻出来,才发现这个服务的名字里带着 BurnInProtection,跟屏保设置根本不在一个地方。以后电视上再遇到自己管自己的行为,我先去翻日志。