回答
文档地址 https://docs.hamibot.com/
// 监控指定应用启动并发送通知
// 定义要监控的应用包名和对应名称
var monitoredApps = {
'com.tencent.qqgame.hyp': '和平精英',
'com.valvesoftware.android.steam.community': '无畏契约',
'com.tencent.msdkteam.universe': '暗区突围',
'com.game.bluewar': '三角洲行动',
'com.xunmeng.pinduoduo': '拼多多',
'tv.danmaku.bili': 'bilibili'
};
// 当前已记录运行状态的应用集合,防止重复触发
var activeApps = {};
// 初始化所有应用为未激活状态
for (var pkg in monitoredApps) {
activeApps[pkg] = false;
}
// 启用无障碍服务(必要前提)
auto();
toast('正在监控指定应用启动...');
// 持续轮询当前前台应用
while (true) {
try {
var currentPkg = currentPackage();
// 遍历监控列表
for (var pkg in monitoredApps) {
var appName = monitoredApps[pkg];
if (currentPkg === pkg) {
// 如果该应用在前台且之前未激活,则触发一次通知
if (!activeApps[pkg]) {
var message = '检测到应用启动: ' + appName + ' (' + pkg + ')';
console.log(message);
hamibot.postMessage(message);
// 可选:弹出提示
toastLog(message);
// 标记为已激活,避免重复发送
activeApps[pkg] = true;
}
} else {
// 如果不在前台,重置状态以便下次启动能再次触发
if (activeApps[pkg]) {
// 简单判断离开即可重置
activeApps[pkg] = false;
}
}
}
// 轮询间隔 1 秒
sleep(1000);
} catch (e) {
console.error('监控过程中出现异常:', e);
sleep(2000); // 出错后延时再继续
}
}
功能说明:
- 自动识别:通过
currentPackage()获取当前前台应用的包名。 - 精准匹配:只对设定的六款应用进行检测(包括“bilibili”,你写的是“bilbil”,实际应为“bilibili”)。
- 防重复提醒:当某个应用从前台退到后台后再进入前台,会重新触发通知;但在连续前台状态下不会重复发送。
- 远程通知:使用
hamibot.postMessage()发送消息,可在 Hamibot 控制台或连接的电脑端接收信息。 - 日志输出:同时使用
console.log和toastLog提供本地提示。
使用前准备:
- 在脚本设置中开启 “启用脚本信息”,否则
postMessage不生效。 - 授予脚本 无障碍服务权限,这是获取当前应用包名的前提。
- 确保设备已连接到 Hamibot 平台,以便将消息传送到电脑。
注意事项:
- 包名基于公开信息,若游戏更新导致包名变化需手动调整。
- 若你在某些定制系统上发现
currentPackage()不准确,可尝试启用useUsageStats特性(需授予“使用情况统计”权限),方法如下:
auto.setFlags(['useUsageStats']);
加在 auto(); 之前即可。
ℹ️ 本回答由 AI 生成,内容仅供参考