解决视频防挂定时暂停或者做了切入后台等操作自动暂停的问题

(本博客所介绍的方法不一定完全有效,有效的请点赞一波😋😋,无效的就当学习学习原理)

实现

一、防止定时自动暂停

定时暂停一般是通过某个函数设置定时器在指定的时间后(如300000ms)通过 pause() 方法暂停并弹出提示窗口,只有当点击窗口中的按钮后才会继续播放.

第一步: 打开浏览器的开发者工具,找到搜索选项

开发者工具不同浏览器打开方式不同, Edge和Google可以按下 ctrl+shift+i打开;
搜索选项在打开开发者工具后,可以按下ctrl+shift+f打开

请添加图片描述

第二步: 在搜索中查找 pause() , 定位到实现定期暂停的函数,并记录下函数名

请添加图片描述

请添加图片描述

查找后一般都能很容易的实现该功能的函数,因为我对比了几个会定期暂停的网页,发现它们该部分的代码出奇的一致,可能这就是码农的搬运能力把~~~

有一些网站可能将js代码打包压缩然后又不加注释,这时候可能会难以辨别,但耐心看总能看懂的(

我们看一下上下文,发现了一个这样的函数

   // 监听播放事件
    player.on('play', function (event) {
        current_time();
        // studyTime();
        loop_flag = setTimeout("loop_pause()", 300000);
    });

目光聚焦 setTimeout 定时器传入的参数,第二个是设定的时间,单位是毫秒,第一个是回调函数,表示设定毫秒数后调用这个函数,我们从英文就可以看出意思,表示300秒后就会启动一次定期暂停。

第三步: 打开控制台(console),用空函数体覆盖原函数

该网站实现自动暂停的函数是 loop_pause() ,所以空函数体的函数名就是 loop_pause

function loop_pause() {}

输入后按下回车生效:
在这里插入图片描述

该方法利用的是js的重名函数生效规则,后面出现(加载)的函数会覆盖掉前面函数代替生效。当然也可以实现在自动暂停后自动点击相关按钮,这样风险更小。


二、防止切后台等操作导致自动暂停

切后台暂停常常通过设置默认的一些事件比如鼠标移出、窗口隐藏等,在它们的回调函数中使用 pause() 方法,在事件监听中将这些事件移除就可以了,非常方便

第一步: 打开浏览器的开发者工具,在元素(Element)一栏找到事件监听器(Event Listenner)

可以发现这里在监听许多事件的发生,从他们的名字中我们可以推测出意思
例如:click表示点击、focus表示输入框聚焦等

在这里插入图片描述

第二步: 明白导致视频自动暂停的操作,点开这些事件把它们移除(remove)即可

比如该网站是在切换到其它页面时就会自动暂停,那么我们找到 visibilitychange 这个事件,点开后有个移除按钮,点击即可实现

在这里插入图片描述


有的网站要求你的鼠标必须在视频范围内,不然就会自动暂停,这时将 mouseout 这个事件移除即可

  • 20
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Android 在切入后台后会暂停所有正在进行的操作,包括 APK 的安装过程。因此,如果用户在 APK 安装过程中切入后台,那么 APK 安装过程会被暂停。 如果你想让 APK 在切入后台自动安装,可以考虑使用服务来安装 APK。具体来说,你可以在服务中使用 Intent 来启动系统的安装程序来安装 APK。这样,即使用户切入后台,服务仍然在后台运行,安装程序也会在后台自动安装 APK。 下面是一个示例代码,用于在服务中安装 APK: ``` public class ApkInstallService extends Service { private String mApkFilePath; @Override public int onStartCommand(Intent intent, int flags, int startId) { if (intent != null) { mApkFilePath = intent.getStringExtra("apk_file_path"); if (mApkFilePath != null) { installApk(); } } return super.onStartCommand(intent, flags, startId); } private void installApk() { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(mApkFilePath)), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } @Nullable @Override public IBinder onBind(Intent intent) { return null; } } ``` 在你的 Activity 中,你可以通过以下代码来启动服务: ``` Intent intent = new Intent(this, ApkInstallService.class); intent.putExtra("apk_file_path", "your_apk_file_path"); startService(intent); ``` 这样,即使用户在 APK 安装过程中切入后台,服务仍然会在后台运行,安装程序也会在后台自动安装 APK。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值