算术表达式

一组算术函数和操作,其他表盘格式元素使用这些函数和操作来解析实时属性值和陀螺仪效应。

在 Wear OS 4 中引入。

示例

根据 Wear OS 设备加速计的 $ x $ 值,将值旋转最多 5 度的示例表达式(在任一方向上)

(5/90)*clamp([ACCELEROMETER_ANGLE_X],0,90) + (-5/90)*clamp([ACCELEROMETER_ANGLE_X],-90,0)

...相当于以下数学表达式,其中 $ \theta_x $ 表示加速计在 $ x $ 方向上的角度

$$ \frac{5}{90} * max(min(\theta_x, 90), -90) $$

函数

表盘格式将以下字符串值识别为函数

函数 描述 返回类型 可用性
round() 将输入值转换为浮点值,然后执行标准 round() 数学运算。 整数 版本 1
floor() 执行标准 floor() 数学运算。 浮点数 版本 1
ceil() 执行标准 ceil() 数学运算。 浮点数 版本 1
fract() 返回输入值的十进制部分;也就是说,浮点值小数点右边的部分。 浮点数 版本 1
sin() 执行标准 sin() 三角运算。 浮点数 版本 1
cos() 执行标准 cos() 三角运算。 浮点数 版本 1
tan() 执行标准 tan() 三角运算。 浮点数 版本 1
asin() 执行标准 asin() 三角运算。返回值始终在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 范围内。 浮点数 版本 1
acos() 执行标准 acos() 三角运算。返回值始终在 $ [0.0, \pi] $ 范围内。 浮点数 版本 1
atan() 执行标准 atan() 三角运算。返回值始终在 $ [-\frac{\pi}{2}, \frac{\pi}{2}] $ 范围内。 浮点数 版本 1
abs() 将输入值转换为浮点值,然后执行标准 abs() 数学运算。 浮点数 版本 1
clamp(,,) 将输入值转换为浮点值,然后执行 clamp() Jetpack 操作以将第一个值拟合到由第二个和第三个值定义的范围内。 浮点数 版本 1
rand(,) 生成满足以下条件的随机浮点值
  • 大于或等于第一个值。
  • 小于或等于第二个值。
假设第一个值小于或等于第二个值。
浮点数 版本 1
log() 执行标准以 $ e $ 为底的 log() 数学运算。 浮点数 版本 1
log2() 模拟以 2 为底的对数。此值通过将输入值以 10 为底的 log() 除以 $ 2 $ 以 10 为底的对数来计算。 浮点数 版本 1
log10() 执行标准以 10 为底的 log() 数学运算。 浮点数 版本 1
sqrt() 执行标准 sqrt() 数学运算。 浮点数 版本 1
cbrt() 执行标准 cbrt() 数学运算。 浮点数 版本 1
exp() 执行标准的 exp() 数学运算。 浮点数 版本 1
expm1() 如果输入值为 $ 1 $,则直接调用 expm1() 数学运算。对于任何其他输入值,通过执行标准的 exp() 数学运算,然后减去 1 来模拟该函数。 浮点数 版本 1
deg() 执行标准的 toDegrees() 数学运算。 $ \frac{\pi}{2} $ 定义为 90 度, $ \pi $ 定义为 180 度。 浮点数 版本 1
rad() 执行标准的 toRadians() 数学运算。90 度定义为 $ \frac{\pi}{2} $,180 度定义为 $ \pi $。 浮点数 版本 1
pow(,) 执行标准的 pow() 数学运算。输出值始终为浮点数。 浮点数 版本 1
numberFormat(,) 将第一个值中的数字格式应用于第二个值。第一个值可以包含以下字符
  • # -- 代表数字。
  • , -- 代表大数字中的逗号分隔符。
  • . -- 代表小数点。
字符串 版本 1
icuText()

输入日期格式字符串 转换为与预期区域设置格式匹配的模式。如果父级 PartText 元素包含 Localization 元素,则使用该区域设置的格式。否则,使用 Wear OS 设备的当前区域设置。

例如,如果设备在美国使用,则输入值为 EE, MMM d, yyyy h:mm a 会产生以下输出:Tue, Mar 14, 2023 1:59 PM

字符串 版本 1
icuText(,)

将第一个参数 输入日期格式字符串 转换为与预期区域设置格式匹配的模式。第二个参数是毫秒形式的时间戳字符串。

如果父级 PartText 元素包含 Localization 元素,则使用该区域设置的格式。否则,使用 Wear OS 设备的当前区域设置。

字符串 版本 2
icuBestText()

输入日期格式字符串 转换为与预期格式匹配的当前时间的模式。如果父级 PartText 元素包含 Localization 元素,则使用该区域设置的格式。否则,使用 Wear OS 设备的当前区域设置。

例如,如果设备在美国于 2023 年 3 月 14 日下午 1:59 使用,则输入值为 yyyy MMM d EE a h:mm 会产生以下输出:Tue, Mar 14, 2023, 1:59 PM

字符串 版本 1
icuBestText(,)

将第一个参数 输入日期格式字符串 转换为与预期格式匹配的当前时间的模式。第二个参数是毫秒形式的时间戳字符串。

如果父级 PartText 元素包含 Localization 元素,则使用该区域设置的格式。否则,使用 Wear OS 设备的当前区域设置。

字符串 版本 2
subText(,,)

从第一个值中提取子字符串。第二个值指示子字符串应在第一个值中开始的基于 0 的索引。第三个值指示子字符串提取应停止的第一个值的基于 0 的索引(“从第二个值到第三个值,但不包括第三个值”)。

示例
  • subText("abc def", 2, 5)c d
  • subText("abc def", 2, 7)c def
字符串 版本 1
textLength()

计算输入字符串的长度。

示例
  • textLength("")0
  • textLength("abcdef")6
字符串 版本 1

运算符

Watch Face Format 将以下字符串值识别为运算符

+
一元加号,或多个值的加法。支持整数和浮点数。
-
一元减号,或多个值的减法。支持整数和浮点数。
*
多个整数或浮点数的乘法。
/

2 个整数或浮点数的除法。

如果 2 个整数的除法结果为非整数,则小数部分将保留在浮点数结果中。例如, $ \frac{1}{2} = 0.5 $。

此外,表达式 $ \frac{x}{0} $ 被计算为 0,其中 $ x $ 是任何整数。

%

2 个整数或浮点数的模除。

如果两个操作数都是整数,则结果是将 2 个值相除得到的余数。例如, $ 19 \bmod 7 = 5 $。

如果至少有一个操作数是浮点数,则结果是余数的浮点等价物;例如: $ 19.0 \bmod 7 = 5.0 $。

~

按位“非”运算符。几个示例

  • ~1 是 $ -2 $
  • ~0 是 $ -1 $
!

逻辑“非”运算符,支持双重否定。几个示例

  • $ !2 $ 是 false
  • $ !!0 $ 是 true
|

按位“或”运算符。支持多个输入值。几个示例

  • $ 1 | 0 = 1 $
  • $ 1 | 2 | 4 = 7 $
||
逻辑“或”运算符。
&
按位“与”运算符。支持正好 2 个输入值。
&&
逻辑“与”运算符。
(
开括号。用于更改标准运算顺序,其中乘法和除法通常优先于加法和减法。
)
闭括号。用于更改标准运算顺序,其中乘法和除法通常优先于加法和减法。
<
“小于”比较运算符。当比较整数与其浮点等价物时,结果为 false
<=
“小于或等于”比较运算符。当比较整数与其浮点等价物时,结果为 true
>
“大于”比较运算符。当比较整数与其浮点等价物时,结果为 false
>=
“大于或等于”比较运算符。当比较整数与其浮点等价物时,结果为 true
?:

提供对三元运算符的支持。通用格式如下

condition ? value_if_true : value_if_false

支持使用括号嵌套三元运算符。

,

在接受多个参数的函数中分隔值。

"

当放置在值的开头和结尾时,指示 Watch Face Format 应将值解释为字符串。

==

比较相等。当比较整数与其浮点等价物时,结果为 true

!=

比较不等。当比较整数与其浮点等价物时,结果为 false