App Inventor 2 手机传感器教程

覆盖:加速度计、陀螺仪、距离传感器、光线传感器、方向传感器

一、传感器概览

1.1 常用传感器

传感器用途事件
加速度计摇一摇、计步加速度改变
陀螺仪旋转检测角速度改变
距离传感器通话静音距离改变
光线传感器自动亮度光强改变
方向传感器指南针、罗盘方向改变

二、加速度传感器

2.1 获取加速度

当 加速度传感器1.加速度改变 时(x, y, z, 绝对值)
  设置 标签_X.文本 = "X: " + 四舍五入(x, 1)
  设置 标签_Y.文本 = "Y: " + 四舍五入(y, 1)
  设置 标签_Z.文本 = "Z: " + 四舍五入(z, 1)
  设置 标签_绝对值.文本 = "总加速度: " + 四舍五入(绝对值, 1)

2.2 摇一摇检测

初始化全局变量 上次摇动时间 = 0

当 加速度传感器1.加速度改变 时(x, y, z, 绝对值)
  如果 绝对值 > 20 则
    初始化局部变量 当前时间 = 获取毫秒数(现在)
    
    // 防止连续触发(1秒间隔)
    如果 当前时间 - 全局变量 上次摇动时间 > 1000 则
      设置 全局变量 上次摇动时间 = 当前时间
      调用 对话框1.显示消息对话框("摇一摇!", "提示", "确定")

三、陀螺仪传感器

3.1 旋转检测

当 陀螺仪传感器1.角速度改变 时(x, y, z)
  设置 标签_X.文本 = "X轴: " + 四舍五入(x, 2)
  设置 标签_Y.文本 = "Y轴: " + 四舍五入(y, 2)
  设置 标签_Z.文本 = "Z轴: " + 四舍五入(z, 2)

  // 旋转检测
  如果 绝对值(x) > 2 则
    设置 标签_状态.文本 = "X轴旋转中"
  否则如果 绝对值(y) > 2 则
    设置 标签_状态.文本 = "Y轴旋转中"
  否则如果 绝对值(z) > 2 则
    设置 标签_状态.文本 = "Z轴旋转中"

四、距离传感器

4.1 接近检测

当 距离传感器1.距离改变 时(距离)
  设置 标签_距离.文本 = "距离: " + 距离 + " cm"

  // 通话静音功能
  如果 距离 < 5 则
    设置 手机震动器1.震动(100)
    设置 标签_状态.文本 = "靠近手机"
  否则
    设置 标签_状态.文本 = "远离手机"

五、光线传感器

5.1 环境亮度

当 光线传感器1.光强改变 时(lux)
  设置 标签_亮度.文本 = "亮度: " + lux + " lux"

  // 自动调节
  如果 lux < 50 则
    设置 标签_模式.文本 = "夜间模式"
  否则如果 lux < 200 则
    设置 标签_模式.文本 = "室内模式"
  否则如果 lux < 1000 则
    设置 标签_模式.文本 = "办公室模式"
  否则
    设置 标签_模式.文本 = "户外模式"

六、方向传感器

6.1 电子罗盘

当 方向传感器1.方向改变 时(方向, 俯角, 翻转)
  设置 标签_方向.文本 = "方向: " + 四舍五入(方向, 0) + "°"
  设置 标签_俯角.文本 = "俯角: " + 四舍五入(俯角, 0) + "°"
  设置 标签_翻转.文本 = "翻转: " + 四舍五入(翻转, 0) + "°"

  // 方向描述
  初始化局部变量 方向词 = ""
  如果 方向 >= 337.5 或 方向 < 22.5 则
    设置 方向词 = "北"
  否则如果 方向 >= 22.5 且 方向 < 67.5 则
    设置 方向词 = "东北"
  否则如果 方向 >= 67.5 且 方向 < 112.5 则
    设置 方向词 = "东"
  否则如果 方向 >= 112.5 且 方向 < 157.5 则
    设置 方向词 = "东南"
  否则如果 方向 >= 157.5 且 方向 < 202.5 则
    设置 方向词 = "南"
  否则如果 方向 >= 202.5 且 方向 < 247.5 则
    设置 方向词 = "西南"
  否则如果 方向 >= 247.5 且 方向 < 292.5 则
    设置 方向词 = "西"
  否则
    设置 方向词 = "西北"
  
  设置 标签_罗盘.文本 = 方向词

七、综合应用:计步器

7.1 基础计步

初始化全局变量 步数 = 0
初始化全局变量 上次加速度 = 0
初始化全局变量 步数阈值 = 12

当 加速度传感器1.加速度改变 时(x, y, z, 绝对值)
  // 检测步态(加速度峰值)
  如果 绝对值 - 全局变量 上次加速度 > 全局变量 步数阈值 且 绝对值 > 10 则
    设置 全局变量 步数 = 全局变量 步数 + 1
    设置 标签_步数.文本 = "步数: " + 全局变量 步数
    
  设置 全局变量 上次加速度 = 绝对值

7.2 重置与保存

当 按钮_重置.被点击 时
  设置 全局变量 步数 = 0
  设置 标签_步数.文本 = "步数: 0"

当 Screen1.销毁 时
  调用 TinyDB1.存储值("步数", 全局变量 步数)

八、常见问题

Q1:传感器不工作?

检查权限(需要运动传感器权限)

Q2:数值不准?

传感器需要校准

Q3:耗电严重?

不用时关闭传感器
文档版本:2026.03 | 作者:App Inventor 2 中文网 www.fun123.cn

参考资料与版权声明

原文来源

版权声明

本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:
  • MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
  • MIT App Inventor Community 帖子版权归原作者所有
本文档由 ai2claw 🐝 整理,仅供学习参考,如有侵权请联系删除。