传感器组件

« 返回首页

传感器组件

目录:

  1. icon 加速度传感器
  2. icon 条码扫描器 指导
  3. icon 气压传感器
  4. 生物识别图标 生物识别 指导
  5. icon 计时器 指导
  6. 手电筒图标 手电筒 指导
  7. icon 陀螺仪传感器
  8. icon 湿度传感器
  9. icon 光线传感器
  10. icon 位置传感器
  11. icon 磁场传感器
  12. icon NFC
  13. icon 方向传感器
  14. icon 计步器
  15. icon 距离传感器
  16. 定时任务图标 定时任务 指导
  17. 声音测量仪图标 声音测量仪 指导
  18. icon 温度传感器

icon 加速度传感器

不可见组件,可检测振动并使用 SI 单位(m/s2)在三个维度上近似测量加速度。其组成部分是:

  • X分量:当手机静止在平坦表面上时为 0,当手机倾斜时为正向右(即左侧抬起),当手机倾斜到右侧时为负向左(即,其右侧尺寸升高)。

  • Y分量:当手机静止在平坦表面上时为0,当底部抬起时为正,当其顶部升起时为负。

  • Z分量:等于 -9.8(当设备处于每秒状态时,地球重力以米每秒为单位)

    静止时与地面平行且显示屏朝上,0 时垂直于地面,面朝下时+9.8。 该值也可能受到加速或反对的影响重力。

属性

可用状态
返回加速度传感器硬件在设备上是否可用。
启用
指定传感器是否触发事件。如果真,传感器将触发事件;否则,即使设备加速或晃动,也不会触发任何事件。
兼容模式
在添加此属性的版本之前,加速度传感器 组件直接传递从 Android 系统接收到的传感器值。然而,这些值无法补偿默认为横向模式的平板电脑,需要 MIT App Inventor 程序员进行补偿。但是,在手机等纵向模式设备中进行补偿会导致结果不正确。

我们现在检测横向模式平板电脑并执行补偿。但是,如果你的项目已经补偿了,将会得到不正确的结果。

虽然我们的首选解决方案是让你更新项目,但你也可以将此属性设置为真,我们的补偿代码将被停用。

注意:我们建议你更新你的项目,因为我们可能会在将来的版本中删除此属性。

中文网注:新建的项目不用关注此属性,无视它就行。

最小间隔(毫秒)
指定连续的 被晃动 事件之间所需的最小间隔(以毫秒为单位)。

一旦手机开始晃动,所有进一步的 被晃动 事件都将被忽略,直到间隔结束。

敏感度
指定加速度传感器的灵敏度。
有效值 含义
1 弱
2 中等
3 强
X分量
返回 X 维度的加速度,以 SI 单位 (m/s²) 表示。

必须启用传感器才能返回有意义的值。

Y分量
返回 Y 维度的加速度,以 SI 单位 (m/s²) 表示。

必须启用传感器才能返回有意义的值。

Z分量
返回 Z 维度的加速度,以 SI 单位 (m/s²) 表示。

必须启用传感器才能返回有意义的值。

事件

加速度变化时(X分量,Y分量,Z分量)
指示 X、Y 和/或 Z 维度上的加速度变化。
被晃动时()
表示设备开始晃动或持续晃动。

方法

无

icon 条码扫描器

用于扫描 QR 码并返回结果字符串的组件。

除了打开摄像头扫码,还可以用扫描图片直接识别相册照片、截图或素材里的条码 / 二维码, 一张图里有多个码时全部返回(不需要额外的拓展和文件权限配合)。

反之,生成二维码 / 条形码用二维码生成组件。

使用指导摄像头扫码与从相册图片识别二维码、一图多码、识别失败排查查看 →

属性

结果
获取上次扫描的文本结果。
使用外部扫描仪
设置是否要使用外部扫描程序,例如扫码机。 如果为 假,则将会使用已集成到 App Inventor 中的 ZXing 的某个版本(注:ZXing是一个开源Java类库用于解析多种格式的1D/2D条形码)。默认为 假。

事件

扫描结束(返回结果)
表示扫描仪已读取(文本)结果并提供结果。
图片扫描完成(结果,格式列表)
扫描图片完成。结果 是识别出的内容(一张图有几个码就有几项),格式列表 是对应的条码格式(如 QR_CODE、EAN_13、CODE_128)。只有一个码时取结果的第 1 项即可;结果属性同时更新为第 1 项。
未找到条码(图像位址)
扫描图片没在图片里找到条码 / 二维码,图像位址 是传入的图片。常见原因:码太小、太模糊、被遮挡或拍歪;截图和生成的码一般都能识别。

方法

执行扫描()
使用相机开始扫描条形码。扫描完成后,将触发 扫描结束 事件。
扫描图片(图像位址)
识别一张图片里的条码 / 二维码,不需要打开摄像头。图片可以是素材文件名、图像选择器或照相机返回的路径、本地路径。识别完成触发图片扫描完成;没找到码触发未找到条码;图片读不出来触发屏幕的「出现错误时」(错误码 701)。安卓用 ZXing、iOS 用系统 Vision、鸿蒙用系统扫码服务识别。

icon 气压传感器

如果硬件支持,可以测量环境气压的物理世界组件。

属性

气压
如果传感器可用并已启用,则返回以 hPa(毫巴)为单位的大气压力。
可用状态
指定设备是否具有支持气压传感器组件的硬件。
启用
指定传感器是否触发事件。 如果为真,传感器将触发事件;否则,不会触发任何事件。
刷新时间
所请求的读数变化之间的最短时间(以毫秒为单位)。

事件

气压改变时(气压值)
当检测到气压(以 hPa 为单位)发生变化时触发该事件。

方法

无

生物识别图标 生物识别

不可见组件:弹出系统的指纹或人脸验证框,确认是本机主人在操作。

常用于登录、查看隐私内容、付款或删除前的二次验证。验证界面、重试次数、失败锁定都由系统负责, 应用拿不到任何指纹或人脸数据,只知道验证是否通过。需要 Android 9 及以上。

使用指导生物识别:弹出系统的指纹或人脸验证框,确认是本机主人在操作,常用于登录、查看隐私内容、支付确认前的二次验证查看 →

快速上手

放一个生物识别、一个按钮、一个标签。点按钮验证,通过后显示隐私内容;本机不支持时提示改用密码:

when 按钮1.Click() {
  if (生物识别1.IsAvailable()) {
    生物识别1.Authenticate("查看隐私内容", "请验证指纹或人脸")
  } else {
    标签1.Text = "本机不支持指纹或人脸,请用密码登录"
  }
}

when 生物识别1.AuthSucceeded() {
  标签1.Text = "验证通过"
}

when 生物识别1.AuthFailed(消息) {
  标签1.Text = join("验证未通过:", 消息)
}

注意:它只能确认「是这台手机的主人」,不能区分是谁,也不能代替账号登录。 需要联网登录的应用,通常第一次用账号密码登录,之后再用生物识别快速解锁。

属性

允许锁屏密码
默认不勾选。勾选后验证框提供「使用锁屏密码」:没录指纹人脸、或多次识别失败时可以改用锁屏密码 / 图案通过。 Android 10 及以上生效。

事件

验证失败时(消息)
验证没有通过时触发,消息 为原因:用户取消、失败次数过多请稍后再试、没有录入指纹或人脸、设备不支持、系统版本过低等。

指纹或人脸比对不上时系统会在框内提示重试,不触发本事件;只有这次验证结束了才触发。

验证成功时()
验证通过时触发。

方法

开始验证(标题,副标题)
弹出系统验证框。标题 为空时显示「身份验证」,副标题 可留空。上一次验证还没结束时直接触发验证失败时。
是否可用()
本机能否进行生物识别:系统版本支持、有指纹或人脸硬件、并且已经录入。勾选了允许锁屏密码时,设置了锁屏密码也算可用。 返回假时应提供其它登录方式。

平台说明

  • 安卓:Android 9 及以上可用,更低版本调用开始验证会直接触发验证失败时(系统版本过低);支持指纹和系统级人脸识别。
  • 鸿蒙:使用系统统一认证控件(人脸、指纹,勾选允许锁屏密码时加锁屏密码),积木写法完全相同; 鸿蒙的验证框只有一行标题,副标题会接在标题后面显示。

icon 计时器  示例

不可见组件,使用手机内部时钟提供实时时间。可以设置时间间隔以定期触发计时器,并执行时间计算、操作、和转换。

对日期和时间的操作,比如来自日期选择器和时间选择器, 通过计时器的方法实现。日期和时间表示为“即时时间” 和“持续时间”。

即时时间假定在设备的本地时区,当它们被创建就表示它是从1970年1月1日(UTC格林威治标准时间)开始到现在的毫秒数。

通过调用方法可以将即时时间转换为文本,格式可以是空字符串、MM/dd/YYYY HH:mm:ss a 或 MMM d, yyyy HH:mm。空字符串将提供默认格式,对于 格式化日期时间是 "MMM d, yyyy HH:mm:ss a",格式化日期是"MMM d, yyyy"。要查看所有可能的格式, 请请参阅此处。

关于合并日期和时间的注意项:为了合并来自另一个即时时间的日期和时间,例如来自日期选择器和 时间选择器,将部分提取为文本,并使用文本来创建一个新的即时时间。例如:

Example code blocks to combine date and time picker data

一个完整的60秒倒计时案例,效果如下:

clock

60秒倒计时完整代码块如下:

clock

逻辑解释:计时器间隔设置为1秒(1000毫秒),每秒触发一次计时事件,事件中将计时变量自增一下,标签显示剩余秒数,当计数到了60,则停止计时器并提醒倒计时结束。

使用指导倒计时、定时与定点执行、多个定时任务、时间格式化的常见问答查看 →

属性

一直计时
如果为 真,即使App未显示在屏幕上也会触发计时。
启用计时
指定是否运行计时器,触发 计时 事件。
计时间隔(毫秒)
指定后续 计时 事件之间的间隔毫秒数。

注意:随着时间的推移可能会发生漂移,如果手机上的应用程序或其他进程繁忙,此处指定的时间间隔系统可能会不遵守。

事件

计时()
计时事件开始运行,直至关闭为止。

方法

增加日(时刻,数量)
返回给定时刻几天后的某个时刻。
增加时段(时刻,数量)
返回参数指定的一段时间后的时刻。
增加时(时刻,数量)
返回给定时刻几小时后的时刻。
增加分(时刻,数量)
返回给定时刻几分钟后的时刻。
增加月(时刻,数量)
返回给定时刻几个月后的时刻。
增加秒(时刻,数量)
返回给定时刻几秒后的时刻。
增加周(时刻,数量)
返回给定时刻几周后的时刻。
增加年(时刻,数量)
返回给定时刻几年后的时刻。
求日期(时刻)
返回该月的第几天。
持续时间(开始时刻,结束时刻)
返回结束与开始之间的毫秒数(正数 或 负数)。
持续时间转换为天(持续时间)
返回持续时间由毫秒转换为天的数值。
持续时间转换为小时(持续时间)
返回持续时间由毫秒转换为小时的数值。
持续时间转换为分钟(持续时间)
返回持续时间由毫秒转换为分钟的数值。
持续时间转换为秒(持续时间)
返回持续时间由毫秒转换为秒的数值。
持续时间转换为周(持续时间)
返回持续时间由毫秒转换为周的数值。
日期格式(时刻,模式)
将即时时间格式化为指定格式的日期字符串。有效的格式请查阅简单日期格式.
日期时间格式(时刻,模式)
将即时时间格式化为指定格式的日期时间字符串。有效的格式请查阅简单日期格式.
时间格式(时刻)
将即时时间格式化为指定格式的时间字符串。有效的格式请查阅简单日期格式.
获取毫秒数(时刻)
返回即时时间自 UTC(世界标准时间)1970年以来的毫秒数。
求小时(时刻)
返回给定时间中的小时数。
创建日期(年,月,日)
返回按 UTC(世界标准时间)格式的年、月、日指定的即时时间。月份字段的有效值为 1-12,日期字段的有效值为 1-31。
由文本建时间点(从)
返回指定 MM/dd/YYYY hh:mm:ss 或 MM/dd/YYYY 或 hh:mm 格式时间文本的即时时间。

注意:时间文本不是以上3种格式的话,会报错:

时间格式错误

由毫秒建时间点(毫秒数)
返回 UTC(世界标准时间)1970年指定毫秒数之后的即时时间。
由元件建时间点(年,月,日,时,分,秒)
返回由指定的年、月、日、时、分、秒指定的 UTC(世界标准时间)即时时间。
创建时间(时,分,秒)
返回按 UTC(世界标准时间)格式的时、分、秒指定的即时时间。
求分钟(时刻)
返回给定日期中的分钟数。
求月份(时刻)
返回给定日期中的月份数。
求月份名(时刻)
返回给定日期中的月份名称。如“十月”。
求当前时间()
返回从手机时钟读取的当前时刻。
求秒数(时刻)
返回给定日期中的秒数。
求系统时间()
返回手机的内部时间。
求星期(时刻)
返回给定日期中的星期数。对应关系如下:
星期 日 一 二 三 四 五 六
数值 1 2 3 4 5 6 7
求星期名(时刻)
返回给定日期中的星期名称,如“星期二”。
求年份(时刻)
返回给定日期中的年份数,如 2023。

手电筒图标 手电筒

不可见组件:打开、关闭、切换设备闪光灯,或查询当前状态。

实现使用 Android 6.0 的 CameraManager.setTorchMode:不打开相机、无需相机 权限、不与正在使用摄像头的逻辑抢资源。Android 6.0 以下设备调用会弹出错误提示。

使用指导开关按钮、SOS 闪烁、光线暗时自动开灯的完整案例查看 →

快速上手

拖一个手电筒到屏幕,放一个按钮,搭下面的代码块:

when 按钮_开关.Click() {
  手电筒1.Toggle()
}

点一下按钮开灯,再点一下关灯。想知道当前状态(比如恢复界面时显示「手电筒已开」):

when Screen1.Initialize() {
  if 手电筒1.IsOn() {
      标签_状态.Text = "手电筒已开"
  } else {
      标签_状态.Text = "手电筒已关"
  }
}

常见问题

现象 检查
弹「手电筒操作失败」 设备没有闪光灯(大部分平板、部分低端机);或闪光灯被其它应用占用
弹「需要 Android 6.0 及以上」 内置版依赖系统的 setTorchMode 接口(Android 6.0 引入)
联机调试点块没反应 伴侣版本太旧,不含本组件(打包 APK 不受影响)

属性

无

事件

无

方法

是否开启()
返回手电筒当前是否处于打开状态。
关灯()
关闭手电筒。已关闭时再次调用无效果。
开灯()
打开手电筒。已打开时再次调用无效果。
切换开关()
切换手电筒状态(开变关,关变开)。

icon 陀螺仪传感器

提供来自设备陀螺仪传感器的数据的组件。

属性

可用状态
陀螺仪传感器是否可用。
启用
指定传感器是否触发事件。 如果为真,传感器将触发事件;否则,不会触发任何事件。
X分量角速度
绕 X 轴的角速度,以 度/秒 为单位。
Y分量角速度
绕 Y 轴的角速度,以 度/秒 为单位。
Z分量角速度
绕 Z 轴的角速度,以 度/秒 为单位。

事件

陀螺仪状态改变时(x分量角速度,y分量角速度,z分量角速度,时间戳)
表明陀螺仪传感器数据已更改。 时间戳参数是事件发生的时间(以纳秒为单位)。

方法

无

icon 湿度传感器

如果硬件支持,可以测量相对环境空气湿度的物理世界组件。

属性

可用状态
指定设备是否具有支持湿度传感器组件的硬件。
启用
指定传感器是否触发事件。 如果真,传感器将触发事件;否则,不会触发任何事件。
湿度
以百分比形式返回相对环境湿度。

传感器必须可用并启用,才能返回有意义的值。

刷新时间
所请求的读数变化之间的最短时间(以毫秒为单位)。 Android 不保证会满足该请求。

事件

湿度改变时(湿度值)
表示相对湿度的变化。

方法

无

icon 光线传感器

可以测量光水平的物理世界组件。

属性

可用状态
指定设备是否具有支持光线传感器组件的硬件。
照度
返回最后测量的照度值(以 lux 为单位)。

传感器必须可用并启用,才能返回有意义的值。

平均照度
通过计算前 10 个测量值的平均值,返回照度值(以 lux 为单位)。

传感器必须可用并启用,才能返回有意义的值。

启用
指定传感器是否触发事件。 如果为真,传感器将触发事件;否则,不会触发任何事件。
刷新时间
所请求的读数变化之间的最短时间(以毫秒为单位)。 Android 不保证会满足该请求。

事件

光线变化时(照度值)
亮度级别发生变化时触发该事件。

方法

无

icon 位置传感器  示例

不可见组件,提供位置信息,包括:

纬度, 经度、 海拔(如果设备支持)、速度(如果设备支持) 和地址。

也可以执行“地理编码”,转换给定的地址(不限于当前地址)到纬度(使用 由地址求纬度方法)和经度(使用 由地址求经度 方法)。

中文网注:如果获取不了经纬度,请尝试开启一下定位权限,参考代码如下:

请求定位权限

为了发挥作用,组件必须将其 启用 属性设置为真,并且设备必须通过无线网络启用定位感应器 或 GPS 卫星(如果在室外)。

应用程序启动时,位置信息可能无法立即可用。你必须稍微等一下找到并使用位置提供者,或者等待位置改变时 事件。

模拟器并不模拟所有设备上的传感器,App应该在物理设备上进行测试。

位置传感器 支持两种坐标体系:GPS坐标(WGS84) 和 高德坐标(GCJ02)。如果需要原始 GPS 坐标,请使用 GPS坐标(WGS84);如果结果要显示在高德地图上,或用于国内常见地图服务,请使用 高德坐标(GCJ02)。当它与 地图 一起使用时,建议两个组件保持相同的坐标体系。

属性

精度
位置传感器将能够根据卫星、手机信号塔和其他用于估计位置的数据的质量,以不同程度的置信度来定位设备。

“精度”值是传感器检测到的位置周围的半径(以米为单位)。该设备有 68% 的机会位于该半径内。更精确的位置检测将导致更小的精度数字,这使得应用程序对设备实际所在的位置更有信心。

如果精度未知,则返回值为 0.0。

海拔
设备的海拔高度(以米为单位)(如果有)。

海拔高度是根据 世界大地测量系统 84 参考椭球体 测量的,而不是海平面。

请注意,设备很难准确地感知海拔高度。手机/平板电脑上报告的海拔高度很容易偏离 30 米或更多。

可用提供者
可用服务提供者的列表,例如 GPS 或网络。 此信息以列表和文本形式提供。
坐标体系
设置位置传感器输出经纬度所使用的坐标体系。

GPS坐标(WGS84) 返回原始 GPS 坐标。

高德坐标(GCJ02) 返回适合高德地图及火星坐标体系地图服务使用的坐标。

此设置会影响 纬度、经度、位置改变时 事件,以及地理编码相关方法返回的坐标。若与 地图 组件一起使用,建议两者保持相同的坐标体系。

当前地址
来自地图数据库的设备的实际街道地址。

提供者可能并不总是提供该地址,并且报告的地址可能并不总是设备所在建筑物的地址。

如果没有特定位置的可用地址信息,则会返回“无可用地址”。

距离间隔
确定传感器尝试用于发送位置更新的最小距离间隔(以米为单位)。

例如,如果设置为 50,则传感器仅在穿过 50 米后才会触发 位置改变时 事件。 然而,传感器不保证在精确的距离间隔处接收到更新。 例如,触发一个事件可能需要超过 5 米。

使用此属性时,检查 精度 也很有用。 当你的设备移动时,检测到的位置的准确性会不断变化。

启用
如果为真,则位置传感器将尝试从 GPS、WiFi 位置或设备上可用的其他方式读取位置信息。 此设置不控制位置信息是否实际可用。 必须在设备设置中启用或禁用设备定位。
拥有精度数据
如果为真,则设备可以报告其精度级别。
拥有海拔数据
如果为真,则设备可以报告其海拔高度。
拥有经纬度数据
如果为真,则设备可以报告经度和纬度。它们是一起的,要么两者都报告,要么都不报告。
纬度
最近可用的纬度值(以度为单位)报告到小数点后 5 位。

如果没有可用值,则返回 0。

纬度是 90(北)和 -90(南)之间的值,其中 0 表示赤道。

经度
最新可用的经度值(以度为单位)报告到小数点后 5 位。

如果没有可用值,则返回 0。

经度是 180(东)和 -180(西)之间的值,其中 0 表示本初子午线。

锁定提供者
指定设备是否会自动切换服务提供者。

当当前提供者无法提供足够的位置信息时,设备可以切换服务提供者。

设置为 真 以防止提供者更改;设置为假 以允许在必要时自动切换。

提供者名称
当前的服务提供者。提供者很可能是 GPS 或网络。
时间间隔(毫秒)
确定传感器尝试用于发送位置更新的最小时间间隔(以毫秒为单位)。 但是,只有当手机位置实际发生变化时才会收到位置更新,并且不保证指定时间间隔的使用。 例如,如果使用 30000 作为时间间隔,则位置更新永远不会早于 30000 毫秒触发,但可能会在之后的任何时间触发。

对于大多数设备来说,小于 30000 毫秒(30 秒)的值不实用。 较小的值可能会耗尽电池电量并使 GPS 过度工作。

事件

获得地址(地址)
响应 逆地理编码 请求的地址。
从地址获取位置(地址,纬度,经度)
响应 地理编码 请求的纬度和经度。
位置改变时(纬度,经度,海拔,速度)
表示已检测到新位置。速度以米/秒为单位。
状态改变时(提供者,状态)
表示位置提供者服务的状态已更改,例如当提供者丢失或开始使用新提供者时。

方法

地理编码(地址)
将地址转换为纬度和经度,通过 从地址获取位置 事件获取。
逆地理编码(纬度,经度)
逆地理编码,是指将地理位置(经纬度)转换为具体的地址信息,例如街道名称、城市名称等‌,通过 获得地址 事件获取。
由地址求纬度(位置名称)
从给定的“位置名称”导出纬度。
由地址求经度(位置名称)
从给定的“位置名称”导出经度。

icon 磁场传感器

磁场传感器组件。

属性

绝对强度
表示磁场的绝对强度。
可用状态
表示设备中有磁场传感器并且可用。
启用
表示磁场传感器是否已启用并工作。
最大范围
表示磁传感器可以达到的最大范围。
X分量强度
表示 X 轴上的磁场强度。
Y分量强度
表示 Y 轴上的磁场强度。
Z分量强度
表示 Z 轴上的磁场强度。

事件

磁场改变时(X强度,Y强度,Z强度,绝对强度)
当磁场发生变化时触发,在参数中设置新值。

方法

无

icon NFC

提供 NFC 功能的不可见组件。目前该组件仅支持读写文本标签(如果设备支持)。

设置 启用读值模式 属性为 真 是读取模式;设置 假 则是写入模式。

注意: 该组件仅适用于应用程序的 Screen1 主屏幕!!

属性

最新消息
返回最近接收到的标签的内容。
启用读值模式
指定 NFC 硬件是否在读取模式下运行。读取模式 (真) 或 写入模式(假)。
写入文本
指定在写入模式下将要写入标签的内容。如果没有设置 启用读值模式 为真,则该方法没有效果。
写入类型
返回 NFC 组件的写入类型。对于此版本的组件,它始终是1。

事件

读标签(消息)
表示检测到新标签,目前只支持纯文本标签。
写标签()
表示标签已进入 NFC 传感器的范围并已被写入。

方法

无

icon 方向传感器

使用方向传感器组件来确定手机的空间方向。

方向传感器是一个不可见的组件,它报告以下三个值(以度为单位):

  • 滚动:设备水平时为 0 度,当设备向左侧向上倾斜时增加至 90 度,当设备向右侧向上倾斜时减少至 -90 度。
  • 俯仰:设备水平时为 0 度,当设备倾斜时增加到 90 度,使其顶部朝下,然后在翻转时减小到 0 度。 类似地,当设备倾斜时,其底部朝下,俯仰角减小到 -90 度,然后在完全翻转时增加到 0 度。
  • 方位角:设备顶部指向北时为 0 度,指向东时为 90 度,指向南时为 180 度,指向西时为 270 度等。

这些测量假设设备本身没有移动。

属性

角度
返回一个角度,指示设备平铺的方向。也就是说,它告诉了在设备表面滚动的球所感受到的力的方向。
可用状态
指示设备上是否存在方向传感器。
方位角
返回设备的方位角。

要返回有意义的值,必须启用传感器。

启用
指定是否启用方向传感器。
力度
返回 0 到 1 之间的数字,指示设备倾斜的程度。它给出了球在设备表面滚动时感受到的力的大小。

对于倾斜角度,请使用 角度。

倾斜角
返回设备的倾斜角。

要返回有意义的值,必须启用传感器。

翻转角
返回设备的滚动角度。

要返回有意义的值,必须启用传感器。

事件

方向改变时(方位角,倾斜角,翻转角)
当方向发生变化时,将触发该事件。

方法

无

icon 计步器

该组件使用 加速度传感器 来记录步数。

属性

距离
返回以米为单位的大致行驶距离。
耗时
返回自计步器启动以来经过的时间(以毫秒为单位)。
简单步数
返回自计步器启动以来发生的简单步数。
停止检测超时时间
返回多长时间(以毫秒为单位)未检测到步数之后进入停止检测状态。
步幅
如果已校准,则返回步幅长度的当前估计值(以米为单位),否则返回默认值 (0.73 m)。
行走步数
返回自计步器启动以来所走的步数。

事件

检测简单步数时(简单步数,距离)
当检测到原始步骤(raw step)时运行此事件。
检测行走步数时(行走步数,距离)
当检测到步行步骤(walking step)时触发此事件。步行步骤是看起来涉及向前运动的步骤。

方法

复位()
重置计步器、距离测量和跑步时间。
保存()
将计步器状态保存至手机。允许累积步数和调用使用计步器的应用程序之间的距离。不同的应用程序将有自己的保存状态。
开始()
启动计步器。
停止()
停止计步器。

icon 距离传感器

用于测量物体相对于设备屏幕距离(以cm厘米为单位)的传感器组件。该传感器通常用于检测手机听筒是否处于耳边接听状态。 大多数设备返回绝对距离(以cm厘米为单位),但也有些设备仅返回近值和远值,在这个情况下,传感器通常报告其在远距离状态下的最大范围值 和 近距离状态下较小的值。 它报告以下值:

  • 距离: 物体到设备之间的距离。

属性

可用状态
报告当前设备是否有距离传感器。
距离
返回对象到设备之间的距离。必须启用传感器才能返回有效值。
启用
如果为真,传感器将触发事件,否则,不触发事件。
暂停时保持运动
返回“暂停时保持运动”属性值。
最大范围
确定传感器的最大范围。一些距离传感器返回二进制值代表“近”或“远”,在这种情况下,传感器通常会报告它在远距离状态下的最大范围值 和 近距离状态下较小的值。 通常,远值是 > 5 cm 的值,但不同的传感器可能有差异。

事件

距离改变(距离)
当对象与设备的距离(以cm厘米为单位)发生变化时触发该事件。

方法

无

定时任务图标 定时任务

不可见组件:到指定时刻触发到点事件——某个时刻一次、每天几点、每周几的几点、每隔几分钟。 设置了通知标题或通知文字时,App 不在前台也会到点弹一条通知。

积木只能在 App 运行时执行,所以到点时分两种情况:

到点时 App 的状态 发生什么
开着(在前台) 立即触发「到点」,是否补发为假
在后台或已关掉 系统到点弹通知(设置了通知文字才弹);用户点通知或下次打开这个屏幕时补发「到点」,是否补发为真

排定的任务会保存下来:App 被关掉、手机重启后照样到点。每个任务用一个编号(整数)区分,编号在每个屏幕内独立; 同一编号再排就替换原来的任务,所以在 Screen1.Initialize 里排任务不会越排越多。 勾选到点打开屏幕可以做闹钟:到点亮屏、直接打开这个屏幕并显示在锁屏上方。 做不到的事:App 关掉后在后台跑积木(例如定时上传数据)。 本组件合并了第三方拓展 UrsAI2Alarm 的常用功能。

使用指导定时任务:到指定时刻(一次、每天、每周几、每隔几分钟)触发「到点」事件;App 不在前台时可弹通知提醒,点通知或下次打开 App 时补发事件查看 →

快速上手:每天 8 点打卡提醒

拖一个定时任务到屏幕,通知标题填「打卡」、通知文字填「该打卡了」:

when Screen1.Initialize() {
  定时任务1.ScheduleDaily(1, 8, 0)
}

when 定时任务1.Fired(编号, 是否补发) {
  if 是否补发 {
    标签1.Text = "你错过了今天 8 点的打卡提醒"
  } else {
    对话框1.ShowAlert("该打卡了")
  }
}

工作日提醒与取消

星期列表用 1(周一)到 7(周日)。下面每个工作日 21:30 提醒写日报,开关控制开启或取消:

when 开关1.Changed() {
  if 开关1.On {
    定时任务1.ScheduleWeekly(2, [1, 2, 3, 4, 5], 21, 30)
  } else {
    定时任务1.Cancel(2)
  }
}

某个时刻提醒一次:用计时器的「由元件建时间点」生成时刻,例如 2026 年 10 月 1 日 9 点:

when 按钮1.Click() {
  定时任务1.ScheduleOnce(3, 计时器1.MakeInstantFromParts(2026, 10, 1, 9, 0, 0))
}

闹钟:到点打开界面

到点打开屏幕勾选为真,通知文字填「该吃药了」。安卓 10 起要先让用户允许后台打开界面(小米手机会打开应用权限页, 请用户同时打开「后台弹出界面」和「显示悬浮窗」):

when 按钮_设闹钟.Click() {
  if 定时任务1.HasLaunchPermission() {
    定时任务1.ScheduleDaily(1, 7, 30)
    对话框1.ShowAlert("已设好每天 7:30 的闹钟")
  } else {
    定时任务1.RequestLaunchPermission()
  }
}

when 定时任务1.LaunchPermissionResult(已授权) {
  if 已授权 {
    定时任务1.ScheduleDaily(1, 7, 30)
  } else {
    对话框1.ShowAlert("没有授权时只在锁屏或熄屏状态下打开界面")
  }
}

when 定时任务1.Fired(编号, 是否补发) {
  if not(是否补发) {
    音效1.Play()
    标签1.Text = "该吃药了"
  }
}

到点时屏幕被拉起、点亮并盖在锁屏上方,「到点」事件里的积木负责响铃和显示内容;用户离开这个界面后恢复正常锁屏。

属性

准点
为假(默认)时系统可能推迟几分钟触发以省电,不需要权限;为真时准点触发。 安卓 12 及以上要用户在设置里允许「闹钟和提醒」(见申请准点权限),没允许时自动按普通精度。
通知文字
到点时 App 不在前台要弹的通知文字。在排任务时记下,之后再改不影响已排好的任务。
到点打开屏幕
为真时到点自动打开发任务的这个屏幕(App 关着也会启动),亮屏并显示在锁屏上方,适合闹钟、吃药提醒。 安卓 10 起需要先用申请打开界面权限取得授权;没有授权时退回全屏通知, 只在锁屏或熄屏时打开界面(需要设置通知标题或文字)。准时打开时「到点」的是否补发为假。在排任务时记下。
通知标题
到点时 App 不在前台要弹的通知标题。通知标题和通知文字都留空时不弹通知,只在 App 开着时触发事件。

事件

到点时(编号,是否补发)
任务到点。是否补发为真表示到点时 App 没在运行(或手机关着机),这是点通知或重新打开 App 时补发的, 每个到点只补发一次。
打开界面权限结果(已授权)
调用申请打开界面权限、用户从设置页回到 App 后触发。

方法

取消(编号)
取消本屏幕指定编号的任务,并收起它弹出的通知。
全部取消()
取消本屏幕排定的全部任务。
能否准点()
能否准点触发。安卓 12 以下和鸿蒙总是真。
能否打开界面()
能否在后台直接打开界面(到点打开屏幕要用)。安卓 10 以下和鸿蒙总是真; 安卓 10 起要允许「显示在其他应用的上层」。小米手机另需「后台弹出界面」,这一项查不到,只能引导用户去设置里打开。
下次到点时刻(编号)
指定任务下一次到点的时刻(毫秒数,可用计时器的「由毫秒建时间点」转成时间点再格式化);没有这个任务时返回 0。
申请打开界面权限()
打开系统设置让用户允许后台打开界面(小米手机打开应用权限页),用户回到 App 后触发打开界面权限结果。
申请准点权限()
打开系统设置的「闹钟和提醒」页,让用户允许准点触发。已有权限时什么也不做。
每天(编号,时,分)
每天几点几分触发(24 小时制)。
已排定编号()
本屏幕已排定、还没结束的任务编号列表,从小到大。
定时一次(编号,时刻)
在指定时刻触发一次。时刻已经过去会报错。
每隔几分钟(编号,间隔分钟)
从现在起每隔几分钟触发一次,最短 15 分钟(系统不允许更频繁地唤醒)。App 开着时要更频繁地做事,请用计时器。
每周(编号,星期,时,分)
每周指定几天的几点几分触发。星期是列表,1=周一 … 7=周日(注意与计时器「求星期」的 1=周日不同),例如工作日是 1 到 5。

平台说明

  • 安卓:用系统闹钟服务排期,重启手机后自动重新排上。准点为假时可能晚几分钟,省电模式下可能更久。 部分国产手机需要在设置里允许本应用「自启动」、省电策略设为「无限制」,否则 App 被划掉后可能不响。 用到「准点」属性或准点权限积木时,应用清单才会声明精确闹钟权限;用到「到点打开屏幕」或打开界面权限积木时,才声明悬浮窗与全屏通知权限。
  • 鸿蒙:通知由系统提醒代理准点弹出(App 开着时也会弹);App 退到后台后积木暂停,回到前台时补发这段时间到点的任务。 「每隔几分钟」在 App 关着时只提醒下一次,打开 App 后继续按节拍排。每个应用最多 30 条系统提醒。 到点打开屏幕由系统决定:设备未在使用(锁屏、熄屏)时自动打开应用,正在使用时只弹提醒,不需要额外权限。

声音测量仪图标 声音测量仪

不可见组件:用麦克风实时测量声音大小(分贝)和音高(频率、音名),可以做噪音计、调音器,或者用吹口哨、拍手控制 App。完全离线,不上传声音。

  • 分贝:16 位录音的均方根换算成分贝,再加「校准偏移」(默认 90)。手机麦克风没有出厂校准,测出的是近似值,适合比较「哪里更吵」;要接近专业分贝计,就在同一位置对比后调「校准偏移」。
  • 音高:用 YIN 算法从声音里找基频,给出频率、最接近的音名(A4 = 440Hz)和音分偏差(正为偏高),人声、乐器、口哨都能测;低于「静音阈值」或没有明确音高(噪声)时不报。
  • 把「启用」设为真开始测量,首次会申请录音权限;App 退到后台自动停止,回到前台自动恢复。

鸿蒙:完整支持,算法与安卓相同,测量值一致。

使用指导噪音计、调音器、吹口哨控制的完整案例查看 →

快速上手

拖一个声音测量仪和一个标签到屏幕,搭下面的代码块,对着手机说话就能看到分贝和音高:

when Screen1.Initialize() {
  声音测量仪1.Enabled = true
}
when 声音测量仪1.SoundLevelChanged(分贝) {
  标签1.Text = join(round(分贝), " 分贝")
}
when 声音测量仪1.PitchDetected(频率, 音名, 音分偏差) {
  标签2.Text = join(音名, "  ", round(频率), " Hz")
}

属性

校准偏移
分贝校准偏移,默认 90。手机麦克风没有出厂校准,测出的是近似值;要更准就拿真实分贝计在同一位置对比,把差值加到这里。
分贝
最近一次测到的声音大小(分贝)。
启用
是否开始测量。设为真时打开麦克风(首次会申请录音权限),设为假时停止。App 退到后台会自动停止,回到前台自动恢复。
频率
最近一次测到的音高频率(Hz),没有明确音高(噪声、太安静)时为 0。
间隔
事件最短间隔(毫秒),默认 200,即每秒最多触发 5 次。最小 50。
音名
最近一次测到的音名,如 A4(440Hz)、C4(中央 C);没有明确音高时为空。
静音阈值
静音阈值(分贝),默认 40。声音低于它时不检测音高,避免环境噪声误报。

事件

检测到音高(频率,音名,音分偏差)
检测到明确的音高,按「事件间隔」触发。frequency 是频率(Hz);noteName 是最接近的音名(如 A4);cents 是相对这个音的偏差(音分,-50~50,正为偏高),做调音器用。
声音大小变化(分贝)
声音大小变化,按「事件间隔」触发。decibels 是当前分贝(近似值,受「校准偏移」影响)。
测量出错(错误信息)
测量出错,如没有录音权限、麦克风被其它应用占用。

方法

频率转音名(频率)
把频率(Hz)换算成最接近的音名,如 440 → A4、261.6 → C4。按十二平均律、A4 = 440Hz。频率不大于 0 时返回空。

icon 温度传感器

可以测量环境空气温度的物理组件(如果硬件支持)。

属性

可用状态
指定设备是否具有支持“温度计”组件的硬件。
启用
指定传感器是否触发事件。 如果为真,传感器将触发事件;否则,不会触发任何事件。
刷新时间(毫秒)
所请求的读数变化之间的最短时间(以毫秒为单位)。Android 不保证会满足该请求。
温度
返回以摄氏度为单位的温度。

传感器必须启用并可返回有意义的值。

事件

温度改变时(温度值)
表示温度发生变化,以摄氏度为单位。

方法

无

文档反馈