初始化全局变量 上次加速度 = 0
初始化全局变量 摔倒阈值 = 25 // m/s²,超过此值认为摔倒
初始化全局变量 静止阈值 = 3 // m/s²,低于此值认为静止
初始化全局变量 摔倒检测中 = 假
当 Screen1.初始化 时
设置 加速度传感器1.启用 = 真
设置 加速度传感器1.最小间隔 = 100 // 100ms检测一次
当 加速度传感器1.加速度改变 时(X加速度, Y加速度, Z加速度)
// 计算合加速度
初始化局部变量 合加速度 = 平方根(
X加速度^2 + Y加速度^2 + Z加速度^2
)
// 检测摔倒:合加速度突然很大,然后很小
如果 合加速度 > 全局变量 摔倒阈值 且 全局变量 摔倒检测中 = 假 则
设置 全局变量 摔倒检测中 = 真
// 启动延迟检测(500ms后检查是否静止)
设置 计时器_摔倒.启用计时 = 真
设置 全局变量 上次加速度 = 合加速度
// 500ms后检查是否真的摔倒
当 计时器_摔倒.计时 时
设置 计时器_摔倒.启用计时 = 假
如果 全局变量 上次加速度 < 全局变量 静止阈值 则
// 确认摔倒!
调用 触发摔倒警报()
设置 全局变量 摔倒检测中 = 假
// 摔倒警报
定义 触发摔倒警报()
调用 音效1.播放
调用 对话框1.显示消息对话框("⚠️ 检测到摔倒!", "警报", "我没事")
// 可选:自动发送位置给紧急联系人
// 调用 发送紧急短信()
// 摇一摇检测(内置事件)
当 加速度传感器1.摇晃 时
调用 对话框1.显示消息对话框("检测到摇晃!", "提示", "确定")