Arithmetikausdruck

Eine Sammlung von arithmetischen Funktionen und Operationen, die andere Elemente des Watch Face-Formats verwenden, um Echtzeit-Attributwerte und gyroskopische Effekte aufzulösen.

Mit Wear OS 4 eingeführt.

Beispiel

Ein Beispielausdruck zum Drehen eines Werts um bis zu 5 Grad in beide Richtungen, basierend auf dem Wert $ x $-Wert des Beschleunigungsmessers des Wear OS-Geräts:

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

Dies entspricht dem folgenden mathematischen Ausdruck, wobei $\theta_x $ den Winkel des Beschleunigungsmessers in $ x $-Richtung darstellt:

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

Funktionen

Das Watch Face-Format erkennt die folgenden Stringwerte als Funktionen:

Funktion Beschreibung Rückgabetyp Verfügbarkeit
round() Wandelt den Eingabewert in einen Gleitkommawert um und führt dann die standardmäßige mathematische round()-Operation aus. Ganzzahl Version 1
floor() Führt die mathematische Standardoperation von floor() durch. Frei schwebend Version 1
ceil() Führt die mathematische Standardoperation von ceil() durch. Frei schwebend Version 1
fract() Gibt den Bruchteil des Eingabewerts zurück, d. h. den Teil des Gleitkommawerts, der rechts vom Dezimalzeichen steht. Frei schwebend Version 1
sin() Führt den trigonometrischen Standardvorgang sin() aus. Frei schwebend Version 1
cos() Führt den trigonometrischen Standardvorgang cos() aus. Frei schwebend Version 1
tan() Führt den trigonometrischen Standardvorgang tan() aus. Frei schwebend Version 1
asin() Führt den trigonometrischen Standardvorgang asin() aus. Der zurückgegebene Wert liegt immer im Bereich $ [-\frac{\pi}{2}, \frac{\pi}{2}] $. Frei schwebend Version 1
acos() Führt den trigonometrischen Standardvorgang acos() aus. Der zurückgegebene Wert liegt immer im Bereich $ [0.0, \pi] $. Frei schwebend Version 1
atan() Führt den trigonometrischen Standardvorgang atan() aus. Der zurückgegebene Wert liegt immer im Bereich $ [-\frac{\pi}{2}, \frac{\pi}{2}] $. Frei schwebend Version 1
abs() Wandelt den Eingabewert in einen Gleitkommawert um und führt dann die standardmäßige mathematische abs()-Operation aus. Frei schwebend Version 1
clamp(,,) Wandelt die Eingabewerte in Gleitkommawerte um und führt dann den Jetpack-Vorgang clamp() aus, um den ersten Wert in den Bereich einzufügen, der durch den zweiten und dritten Wert definiert wird. Frei schwebend Version 1
rand(,) Generiert einen zufälligen Gleitkommawert, der gleichzeitig die folgenden Bedingungen erfüllt:
  • Größer als oder gleich dem ersten Wert.
  • Kleiner als oder gleich dem zweiten Wert.
Geht davon aus, dass der erste Wert kleiner oder gleich dem zweiten Wert ist.
Frei schwebend Version 1
log() Führt die standardmäßige mathematische Operation zur Basis-$-e $ log() durch. Frei schwebend Version 1
log2() Simuliert einen Logarithmus zur Basis 2. Dieser Wert wird berechnet, indem der Wert zur Basis 10 log() des Eingabewerts durch den Logarithmus zur Basis 10 von 2 $ geteilt wird. Frei schwebend Version 1
log10() Führt die mathematische Standardoperation log() zur Basis 10 durch. Frei schwebend Version 1
sqrt() Führt die mathematische Standardoperation von sqrt() durch. Frei schwebend Version 1
cbrt() Führt die mathematische Standardoperation von cbrt() durch. Frei schwebend Version 1
exp() Führt die mathematische Standardoperation von exp() durch. Frei schwebend Version 1
expm1() Ruft die mathematische Operation expm1() direkt auf, wenn der Eingabewert 1 $ ist. Für jeden anderen Eingabewert wird die Funktion durch Ausführen der mathematischen Standardoperation exp() simuliert und dann 1 subtrahiert. Frei schwebend Version 1
deg() Führt die mathematische Standardoperation von toDegrees() durch. $ \frac{\pi}{2} $ ist als 90 Grad definiert und $ \pi $ als 180 Grad. Frei schwebend Version 1
rad() Führt die mathematische Standardoperation von toRadians() durch. 90 Grad sind als $ \frac{\pi}{2} $ definiert und 180 Grad als $ \pi $. Frei schwebend Version 1
pow(,) Führt die mathematische Standardoperation von pow() durch. Der Ausgabewert ist immer eine Gleitkommazahl. Frei schwebend Version 1
numberFormat(,) Wendet das Zahlenformat vom ersten Wert auf den zweiten Wert an. Der erste Wert kann die folgenden Zeichen enthalten:
  • # stellt eine numerische Ziffer dar.
  • ,: steht für ein Komma als Trennzeichen in großen Zahlen.
  • . stellt einen Dezimalpunkt dar.
String Version 1
icuText()

Wandelt den Eingabestring für das Datumsformat in ein Muster um, das dem erwarteten Sprachformat entspricht. Wenn das übergeordnete PartText-Element ein Localization-Element enthält, wird das Format dieser Sprache verwendet. Andernfalls wird die aktuelle Sprache des Wear OS-Geräts verwendet.

Wenn das Gerät beispielsweise in den USA verwendet wird, führt der Eingabewert EE, MMM d, yyyy h:mm a zu der folgenden Ausgabe: Tue, Mar 14, 2023 1:59 PM

String Version 1
icuText(,)

Wandelt den Eingabedatumsformatstring des ersten Arguments in ein Muster um, das dem erwarteten Sprachformat entspricht. Das zweite Argument ist ein Zeitstempelstring in Millisekunden.

Wenn das übergeordnete PartText-Element ein Localization-Element enthält, wird das Format dieser Sprache verwendet. Andernfalls wird die aktuelle Sprache des Wear OS-Geräts verwendet.

String Version 2
icuBestText()

Wandelt den Eingabedatumsformatstring in die aktuelle Zeit um, deren Muster dem erwarteten Format entspricht. Wenn das übergeordnete PartText-Element ein Localization-Element enthält, wird das Format dieser Sprache verwendet. Andernfalls wird die aktuelle Sprache des Wear OS-Geräts verwendet.

Wenn das Gerät beispielsweise am 14. März 2023 um 13:59 Uhr in den USA verwendet wird, liefert der Eingabewert yyyy MMM d EE a h:mm die folgende Ausgabe: Tue, Mar 14, 2023, 1:59 PM

String Version 1
icuBestText(,)

Wandelt das erste Argument des Eingabedatumsformatstrings in die aktuelle Zeit um, deren Muster mit dem erwarteten Format übereinstimmt. Das zweite Argument ist ein Zeitstempelstring in Millisekunden.

Wenn das übergeordnete PartText-Element ein Localization-Element enthält, wird das Format dieser Sprache verwendet. Andernfalls wird die aktuelle Sprache des Wear OS-Geräts verwendet.

String Version 2
subText(,,)

Extrahiert einen Teilstring aus dem ersten Wert. Der zweite Wert gibt den 0-basierten Index in den ersten Wert an, bei dem der Teilstring beginnen soll. Der dritte Wert gibt den 0-basierten Index in den ersten Wert an, bei dem die Teilstring-Extraktion beendet werden soll („vom zweiten Wert bis zum dritten Wert, aber nicht einschließlich).

Beispiele:
  • subText("abc def", 2, 5) ist c d
  • subText("abc def", 2, 7) ist c def
String Version 1
textLength()

Berechnet die Länge des Eingabestrings.

Beispiele:
  • subText("abc def", 2, 5) ist c d
  • subText("abc def", 2, 7) ist c def
String Version 1

Netzbetreiber

Das Watch Face-Format erkennt die folgenden Stringwerte als Operatoren:

+
Unäres Plus oder Addition mehrerer Werte. Unterstützt sowohl Ganzzahlen als auch Gleitkommawerte.
-
Unäres Minus oder Subtraktion mehrerer Werte Unterstützt sowohl Ganzzahlen als auch Gleitkommawerte.
*
Multiplikation mehrerer ganzzahliger oder Gleitkommawerte
/

Teilung von 2 Ganz- oder Gleitkommawerten.

Wenn die Division von 2 Ganzzahlen zu einem Wert ohne Ganzzahl führt, wird der Dezimalwert im Gleitkommaergebnis beibehalten. Beispiel: $ \frac{1}{2} = 0, 5 $.

Darüber hinaus wird der Ausdruck $ \frac{x}{0} $ als 0 ausgewertet, wobei $ x $ eine beliebige Ganzzahl ist.

%

Modulare Division aus 2 Ganz- oder Gleitkommawerten.

Wenn beide Operanden Ganzzahlen sind, ist das Ergebnis der Rest der Division der zwei Werte. Beispiel: $ 19 \bmod 7 = 5 $.

Wenn mindestens ein Operand eine Gleitkommazahl ist, ist das Ergebnis ein Gleitkommawert des Rests, z. B. $ 19.0 \bmod 7 = 5.0 $.

~

Bitweiser „not“-Operator. Einige Beispiele:

  • ~1 kostet -2 $
  • ~0: -1 $
!

Logischer „not“-Operator, der doppelte negative Werte unterstützt. Einige Beispiele:

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

Bitweiser ODER-Operator. Unterstützt mehr als zwei Eingabewerte. Einige Beispiele:

  • 1 € | 0 = 1 €
  • 1 € | 2 | 4 = 7 €
||
Logischer ODER-Operator
&
Bitweiser AND-Operator. Unterstützt genau 2 Eingabewerte.
&&
Logischer „und“-Operator.
(
Klammer öffnen. Wird zum Ändern der Standardreihenfolge von Operationen verwendet, wobei Multiplikation und Division normalerweise Vorrang vor Addition und Subtraktion haben.
)
Geschlossene Klammer. Wird zum Ändern der Standardreihenfolge von Operationen verwendet, wobei Multiplikation und Division normalerweise Vorrang vor Addition und Subtraktion haben.
<
Der Vergleichsoperator „Kleiner als“. Beim Vergleich einer Ganzzahl mit ihrem Gleitkommawert ist das Ergebnis false.
<=
Der Vergleichsoperator „kleiner als oder gleich“. Beim Vergleich einer Ganzzahl mit ihrem Gleitkommawert ist das Ergebnis true.
>
Der Vergleichsoperator „größer als“. Beim Vergleich einer Ganzzahl mit ihrem Gleitkommawert ist das Ergebnis false.
>=
Der Vergleichsoperator „größer oder gleich“. Beim Vergleich einer Ganzzahl mit ihrem Gleitkommawert ist das Ergebnis true.
? und :

Bietet Unterstützung für ternäre Vorgänge. Das allgemeine Format lautet wie folgt:

condition ? value_if_true : value_if_false

Unterstützt verschachtelte ternäre Operationen mit Klammern.

,

Trennt Werte in Funktionen, die mehr als ein Argument annehmen.

"

Wenn es am Anfang und am Ende eines Werts platziert wird, gibt es an, dass das Watch Face-Format den Wert als String interpretieren soll.

==

Gleichheitshalber vergleichen. Beim Vergleich einer Ganzzahl mit ihrem Gleitkommawert ist das Ergebnis true.

!=

Gleichheit auf Ungleichheit hin vergleichen. Beim Vergleich einer Ganzzahl mit ihrem Gleitkommawert ist das Ergebnis false.