如何用Cordova/PhoneGap检测安卓手机解锁事件并启动计时器?
安卓解锁事件检测+计时器启动的Cordova实现方案
当然能搞定!你要的「用户解锁安卓手机时启动计时器」需求,用Cordova完全可以实现,我给你整理了一套具体的落地方案:
1. 先装个能监听系统广播的插件
安卓的解锁事件对应系统的ACTION_USER_PRESENT广播,我们需要用cordova-plugin-broadcast-receiver来监听这个广播。打开终端,在你的Cordova项目根目录下执行:
cordova plugin add cordova-plugin-broadcast-receiver
2. 给安卓配置权限和接收器
找到你项目里的platforms/android/app/src/main/AndroidManifest.xml,添加下面的权限和广播接收器声明——这一步是让系统允许我们接收解锁事件:
<!-- 添加必要权限 --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- 声明监听解锁事件的接收器 --> <receiver android:name="cordova.plugin.broadcastreceiver.BroadcastReceiver"> <intent-filter> <!-- 目标就是这个解锁事件的Action --> <action android:name="android.intent.action.USER_PRESENT" /> </intent-filter> </receiver>
3. 写JS代码监听事件+启动计时器
在你的应用主JS文件(比如www/js/index.js)里,加上这段逻辑——等设备就绪后注册广播监听,一旦检测到解锁就启动计时器:
document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { // 拿到广播接收器的实例 const broadcastReceiver = cordova.plugins.broadcastReceiver; // 注册监听解锁事件 broadcastReceiver.register( function(intent) { console.log("用户解锁屏幕啦!启动计时器~"); // 这里调用你的计时器启动函数 startTimer(); }, function(error) { console.error("注册监听失败:", error); }, ["android.intent.action.USER_PRESENT"] // 指定要监听的系统广播 ); } // 示例计时器函数,你可以根据需求修改 function startTimer() { let elapsedSeconds = 0; const timer = setInterval(() => { elapsedSeconds++; console.log(`计时器已运行 ${elapsedSeconds} 秒`); // 这里可以加更新UI的逻辑,比如把时间显示在页面上 }, 1000); }
额外提示
- 这个方案只适配安卓平台,iOS的锁屏/解锁逻辑不一样,如果需要支持iOS得单独处理,但你的需求是安卓端,完全够用。
- 测试的时候把应用后台挂着,锁屏再解锁,就能在控制台看到计时器启动的日志了。
- 如果希望应用被杀死后还能监听解锁事件,得搭配后台保活插件(比如
cordova-plugin-background-mode),不过一般正常使用场景下,上面的方案就足够了。
内容的提问来源于stack exchange,提问作者Caolán Maguire
相关产品推荐
相关产品推荐

