Thanox 情景模式系统事件 Facts:屏幕、电量、蓝牙、WiFi
屏幕状态
| Facts 参数 | 类型 | 含义 |
|---|
screenOn | Boolean | 亮屏事件(屏幕从熄灭变为点亮) |
screenOff | Boolean | 灭屏事件(屏幕从点亮变为熄灭) |
userPresent | Boolean | 解锁事件(用户解锁设备) |
条件示例
# 息屏时触发清理
screenOff == true
# 解锁时触发
userPresent == true
# 亮屏 5 分钟后(需要配合其他逻辑)
screenOn == true && ...
电量变化
| Facts 参数 | 类型 | 含义 |
|---|
batteryChanged | Boolean | 电量发生变化 |
batteryLevel | int | 当前电量百分比(0~100) |
isCharging | Boolean | 是否正在充电 |
isAcCharge | Boolean | 是否为 AC 交流电充电 |
isUsbCharge | Boolean | 是否为 USB 充电 |
条件示例
# 电量低于 20%
batteryChanged == true && batteryLevel <= 20 && !isCharging
# 开始充电时
batteryChanged == true && isCharging == true && isAcCharge == true
蓝牙事件
Thanox 提供了蓝牙状态和连接状态的丰富 facts:
蓝牙开关状态
| Facts 参数 | 类型 | 含义 |
|---|
btStateChanged | Boolean | 蓝牙开关状态发生变化 |
btStateOff | Boolean | 蓝牙已关闭 |
btStateTurningOff | Boolean | 蓝牙正在关闭 |
btStateOn | Boolean | 蓝牙已开启 |
btStateTurningOn | Boolean | 蓝牙正在开启 |
蓝牙连接状态
| Facts 参数 | 类型 | 含义 |
|---|
btConnectionStateChanged | Boolean | 蓝牙连接状态发生变化 |
btConnectionStateConnected | Boolean | 蓝牙已连接 |
btConnectionStateConnecting | Boolean | 蓝牙正在连接 |
btConnectionStateDisconnected | Boolean | 蓝牙已断开 |
btConnectionStateDisconnecting | Boolean | 蓝牙正在断开 |
蓝牙设备列表
| Facts 参数 | 类型 | 含义 |
|---|
btBoundedDevices | List\<BluetoothDevice\> | 已绑定的蓝牙设备列表(完整对象) |
btBoundedDeviceAddresses | List\<String\> | 已绑定设备的 MAC 地址列表 |
btBoundedDeviceAliasNames | List\<String\> | 已绑定设备的别名列表 |
btBoundedDeviceBatteryLevel | List\<Int\> | 已绑定设备的电量百分比 |
实战示例:蓝牙连接到某耳机时降低音量
[
{
"name": "BT Headset Volume Down",
"description": "连接到指定蓝牙耳机时降低媒体音量",
"priority": 2,
"condition": "btConnectionStateChanged == true && btConnectionStateConnected == true && btBoundedDeviceAliasNames.contains(\"MDR-XB650BT\")",
"actions": [
"ui.showShortToast(\"已连接 MDR-XB650BT\");"
]
}
]
注意:List.contains() 是 MVEL 的集合操作,可以检查 List 中是否包含某元素。
WiFi 状态变化
| Facts 参数 | 类型 | 含义 |
|---|
wifiStateChanged | Boolean | WiFi 状态已变化 |
wifiState | WifiState | WiFi 状态对象 |
WifiState 对象包含:
| 字段 | 类型 | 含义 |
|---|
enabled | Boolean | WiFi 是否开启 |
statusLabel | String | 状态信息(如 "No network") |
ssid | String | 当前连接的 SSID(如 "ChinaNet-d2Xq-5G") |
条件示例
# 切换到指定 WiFi 时
wifiStateChanged == true && wifiState.enabled == true && wifiState.ssid == "HomeWiFi"
系统启动
| Facts 参数 | 类型 | 含义 |
|---|
systemReady | Boolean | Android 系统启动完成 |
适合写"开机自动执行"类的规则。
Facts 组合使用
MVEL 支持标准的逻辑运算,可以把多个 facts 组合成复杂条件:
# 息屏 + 非充电状态 + 电量低于 30% —— 执行省电动作
screenOff == true && !isCharging && batteryLevel <= 30
# 前台应用是某支付 app + WiFi 已连接 —— 安全场景提示
frontPkgChanged == true && to == "com.example.payment" && wifiState.enabled == true
组合条件让情景模式能实现非常精细的触发逻辑——这是 Thanox 规则引擎的核心优势之一。