- Overview - 综述
- Q&A - 常见问题
- App - 应用
- Console - 控制台
- CoordinatesBasedAutomation - 基于坐标的操作
- Device - 设备
- Dialogs - 对话框
- Engines - 脚本引擎
- Events - 事件与监听
- Floaty - 悬浮窗
- Files - 文件系统
- Globals - 一般全局函数
- Http - HTTP
- Images - 图片与图色处理
- Keys - 按键模拟
- Media - 多媒体
- Modules - 模块
- WidgetsBasedAutomation - 基于控件的操作
- Sensors - 传感器
- Shell - Shell命令
- Storages - 本地存储
- Threads - 多线程
- Timers - 定时器
- UI - 用户界面
- Work with Java - 调用Java API
Auto.js 4.1.0 文档
目录
-
Sensors#
SensorEvent 传感器事件,用于获取传感器数据变化时的所有信息ax<number> x轴上的加速度,单位m/s^2ay<number> y轴上的加速度,单位m/s^2az<number> z轴上的加速度,单位m/s^2 这里的x轴,y轴,z轴所属的坐标系统如下图(其中z轴垂直于设备屏幕表面):!

orientation方向传感器,参数(event, azimuth, pitch, roll):gyroscope陀螺仪传感器,参数(event, wx, wy, wz):magnetic_field磁场传感器,参数(event, bx, by, bz):gravity重力传感器,参数(event, gx, gy, gz):linear_acceleration线性加速度传感器,参数(event, ax, ay, az):ambient_temperature环境温度传感器,大部分设备并不支持,参数(event, t):event<number> 环境温度,单位摄氏度。
light光线传感器,参数(event, light):event<number> 环境光强度,单位lux
pressure压力传感器,参数(event, p):event<number> 大气压,单位hPa
proximity距离传感器,参数(event, distance):event<number> 一般指设备前置摄像头旁边的距离传感器到前方障碍物的距离,并且很多设备上这个值只有两种情况:当障碍物较近时该值为0,当障碍物较远或在范围内没有障碍物时该值为5
relative_humidity湿度传感器,大部分设备并不支持,参数(event, rh):event<number> 相对湿度,范围为0~100(百分比)
sensors.register(sensorName[, delay])#
sensorName<string> 传感器名称,常用的传感器名称如上面所述delay<number> 传感器数据更新频率,可选,默认为sensors.delay.normal。可用的值如下:sensors.delay.normal正常频率sensors.delay.ui适合于用户界面的更新频率sensors.delay.game适合于游戏的更新频率sensors.delay.fastest最快的更新频率】
- 返回 SensorEventEmitter。
例如:
console.show(); //注册传感器监听 var sensor = sensors.register("gravity"); if(sensor == null){ toast("不支持重力传感器"); exit(); } //监听数据 sensor.on("change", (gx, gy, gz)=>{ log("重力加速度: %d, %d, %d", gx, gy, gz); });可以通过delay参数来指定传感器数据的更新频率,例如:
var sensor = sensors.register("gravity", sensors.delay.game);另外,如果不支持
sensorName所指定的传感器,那么该函数将返回null;但如果sensors.ignoresUnsupportedSensor的值被设置为true, 则该函数会返回一个不会分发任何传感器事件的SensorEventEmitter和#emiiter#注销所有传感器监听器。
sensors.ignoresUnsupportedSensor#
表示是否忽略不支持的传感器。如果该值被设置为
true,则函数sensors.register()即使对不支持的传感器也会返回一个无任何数据的虚拟传感器监听,也就是sensors.register()不会返回null从而避免非空判断,并且此时会触发sensors的"unsupported_sensor"事件。//忽略不支持的传感器 sensors.ignoresUnsupportedSensor = true; //监听有不支持的传感器时的事件 sensors.on("unsupported_sensor", function(sensorName){ toastLog("不支持的传感器: " + sensorName); }); //随便注册一个不存在的传感器。 log(sensors.register("aaabbb"));事件: 'unsupported_sensor'#
sensorName<string> 不支持的传感器名称
当
sensors.ignoresUnsupportedSensor被设置为true并且有不支持的传感器被注册时触发该事件。事件参数的传感器名称。SensorEventEmitter#
注册传感器返回的对象,其本身是一个EventEmmiter,用于监听传感器事件。
事件: 'change'#
..args<Any> 传感器参数
当传感器数据改变时触发该事件;该事件触发的最高频繁由
sensors.register()指定的delay参数决定。事件参数根据传感器类型不同而不同,具体参见本章最前面的列表。
一个监听光线传感器和加速度传感器并且每0.5秒获取一个数据并最终写入一个csv表格文件的例子如下:
//csv文件路径 cosnt csvPath = "/sdcard/sensors_data.csv"; //记录光线传感器的数据 var light = 0; //记录加速度传感器的数据 var ax = 0; var ay = 0; var az = 0; //监听光线传感器 sensors.register("light", sensors.delay.fastest) .on("change", l => { light = l; }); //监听加速度传感器 sensors.register("accelerometer", sensors.delay.fastest) .on("change", (ax0, ay0, az0) => { ax = ax0; ay = ay0; az = az0; }); var file = open(csvPath, "w"); //写csv表格头 file.writeline("light,ax,ay,az") //每0.5秒获取一次数据并写入文件 setInterval(()=>{ file.writeline(util.format("%d,%d,%d,%d", light, ax, ay, az)); }, 500); //10秒后退出并打开文件 setTimeout(()=>{ file.close(); sensors.unregsiterAll(); app.viewFile(csvPath); }, 10 * 1000);事件: 'accuracy_change'#
accuracy<number> 表示传感器精度。为以下值之一:- -1 传感器未连接
- 0 传感器不可读
- 1 低精度
- 2 中精度
- 3 高精度
当传感器精度改变时会触发的事件。比较少用。