算术表达式

一系列算术函数和运算,其他表盘格式元素使用它们来解析实时属性值和陀螺仪效应。

在 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个整数或浮点值的模除。

如果两个操作数都是整数,则结果是这两个值相除的余数。例如,$ 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