Wear-Zifferblatt

Apps für Smartwatches mit Wear OS by Google entwickeln

Hinweis : Das Watch Face-Format ist erforderlich, damit Zifferblätter auf Geräten mit Wear OS 5 oder höher vorinstalliert werden können und für alle neuen Zifferblätter, die bei Google Play veröffentlicht werden.

Ab Januar 2026 ist das Watch Face-Format erforderlich, damit Zifferblätter auf allen Wear OS-Geräten installiert werden können.

Weitere Informationen zu den Änderungen für Nutzer finden Sie in diesem Hilfeartikel.

Letzte Aktualisierung Stabile Release Releasekandidat Beta-Release Alpha-Release
17. Dezember 2025 1.2.1 - 1.3.0-beta01 -

Abhängigkeiten deklarieren

Wenn Sie eine Abhängigkeit von Wear hinzufügen möchten, müssen Sie Ihrem Projekt das Google Maven-Repository hinzufügen. Weitere Informationen finden Sie im Maven-Repository von Google.

Fügen Sie die Abhängigkeiten für die benötigten Artefakte der Datei build.gradle für Ihre App oder Ihr Modul hinzu:

Groovy

dependencies {
    // Use to implement wear watchfaces
    implementation "androidx.wear.watchface:watchface:1.2.1"

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation "androidx.wear.watchface:watchface-editor:1.2.1"

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

Kotlin

dependencies {
    // Use to implement wear watchfaces
    implementation("androidx.wear.watchface:watchface:1.2.1")

    // Use to implement wear watchface complications
    implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1"
    // (Kotlin-specific extensions)
    implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1"

    // Use to implement a watchface style and complication editor
    implementation("androidx.wear.watchface:watchface-editor:1.2.1")

    // Can use to render complications.
    // This library is optional and watchfaces may have custom implementation for rendering
    // complications.
    implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1"
}

Weitere Informationen zu Abhängigkeiten finden Sie unter Build-Abhängigkeiten hinzufügen.

Feedback

Ihr Feedback hilft uns, Jetpack zu verbessern. Wenn Sie neue Probleme entdecken oder Ideen zur Verbesserung dieser Bibliothek haben, lassen Sie es uns wissen. Bevor Sie ein neues Problem erstellen, sollten Sie sich jedoch die bereits gemeldeten Probleme in dieser Bibliothek ansehen. Wenn Sie sich einer Problemmeldung anschließen möchten, klicken Sie auf die Schaltfläche mit dem Stern.

Neues Problem melden

Weitere Informationen finden Sie in der Dokumentation zum Issue Tracker.

Version 1.3

Version 1.3.0-beta01

17. Dezember 2025

androidx.wear.watchface:watchface-*:1.3.0-beta01 ist veröffentlicht. Version 1.3.0-beta01 enthält diese Commits.

Neue Funktionen

  • Es wurde Unterstützung für statische Vorschau-Daten für Komplikationen hinzugefügt. Ein Komplikationsanbieter kann statische Vorschau-Daten in seinem Manifest angeben. Weitere Informationen finden Sie unter androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser.
  • Die Utility-Klasse ComplicationTextFormatting wurde hinzugefügt, um Daten und Uhrzeiten so kurz wie möglich zu formatieren. Das ist nützlich für Komplikationen, bei denen der Platz sehr begrenzt ist.

API-Änderungen

  • Das bisher experimentelle Attribut Renderer.watchfaceColors ist jetzt privat. Für diese Property gibt es noch öffentliche Accessoren. (Ifdf60, b/409363281)

Fehlerkorrekturen

  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich. (I48968, b/407632515)

Version 1.3.0-alpha07

23. April 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha07 ist veröffentlicht. Version 1.3.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Das UserStyle-Schema eines Zifferblatts kann schon seit einiger Zeit definiert werden und ColorUserStyleSetting kann in XML definiert werden.

API-Änderungen

  • Für Projekte, die mit Kotlin 2.0 veröffentlicht wurden, ist KGP 2.0.0 oder höher erforderlich. (Idb6b5)
  • Die Watch Face Push API wurde hinzugefügt. Damit kann eine Wear OS-App ein Zifferblatt programmatisch auf einer Smartwatch installieren.

Fehlerkorrekturen

  • Anbieter von Zifferblatt-Komplikationen, die Version 1.3.0-alpha06 verwenden, sollten ein Upgrade durchführen, da ein Absturzfehler mit ComplicationDataSourceUpdateRequester in der nächsten Version von WearOS behoben wurde.

Version 1.3.0-alpha06

26. März 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha06 ist veröffentlicht. Version 1.3.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Die Wear-Zifferblatt-APIs (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava und watchface-style) wurden zugunsten des Wear-Zifferblattformats eingestellt und werden schließlich aus AndroidX entfernt. Die APIs für Komplikationen werden nicht eingestellt und bleiben erhalten. (Ice960)
  • Die APIs für Zifferblätter können jetzt direkt mit WearSDK kommunizieren. Das ist effizienter, da weniger IPC-Hops erforderlich sind.

Version 1.3.0-alpha05

15. Januar 2025

androidx.wear.watchface:watchface-*:1.3.0-alpha05 ist veröffentlicht. Version 1.3.0-alpha05 enthält diese Commits.

Neue Funktionen

Bei Zifferblättern können Nutzer Farben in der Regel über eine ListUserStyle auswählen. Das funktioniert zwar, aber die Symbole müssen per Bluetooth an den Companion-Editor gesendet werden, was ineffizient ist. Deshalb haben wir ColorUserStyleSetting eingeführt. Die Nutzlast ist eine Liste mit einer oder mehreren Farben pro Stil, was ein deutlich kompakteres Wire-Format ermöglicht.

Wir haben eine OEM-orientierte Funktion hinzugefügt, mit der OEM-Zusatzfunktionsanbieter Extras zu „ComplicationData“ hinzufügen können, die von OEM-Zifferblättern verwendet werden.

API-Änderungen

  • Die Klassen UserStyleSetting und UserStyleOption haben jetzt Builder, die die empfohlene Methode zum Erstellen sind. (Iacd03)
  • Unterstützung für das Übergeben von Extras in ComplicationData. Diese Methode ist für OEMs vorgesehen, die sowohl den Komplikationsanbieter als auch das empfangende Zifferblatt steuern. Das Festlegen eines Extras erfordert die Berechtigung com.google.android.wearable.permission.COMPLICATION_EXTRAS. (I4e3b2)
  • Bei Zifferblättern können Nutzer Farben in der Regel über ein ListUserStyle auswählen. Für jedes ListOption gibt es ein Symbol. Da UserStyle-Schemas über Bluetooth gesendet werden, ist es wichtig, die Größe des Schemas gering zu halten. Das kann ein Problem sein, wenn aufgrund der vielen Symbole Dutzende von Farboptionen angegeben werden. Um dies zu erleichtern, haben wir ColorUserStyleSetting hinzugefügt, wenn die Option eine Liste mit Farben anstelle eines Symbols enthält. Das ist viel kompakter. (Ib542e)
  • Für die Verwendung von ColorUserStyleSetting und ColorOption ist API 34 erforderlich. (I8771d)

Fehlerkorrekturen

  • In dieser Bibliothek werden jetzt JSpecify-Annotationen für Nullsicherheit verwendet, die typbezogen sind. Kotlin-Entwickler sollten das folgende Compiler-Argument verwenden, um die korrekte Verwendung zu erzwingen: -Xjspecify-annotations=strict (dies ist die Standardeinstellung ab Version 2.1.0 des Kotlin-Compilers). (Ifd363, b/326456246)

Version 1.3.0-alpha04

18. September 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha04 ist veröffentlicht. Version 1.3.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Unterstützung für das Lazy Loading von Symbolen in UserStyleSettings und UserStyleOptions wurde hinzugefügt. Das Laden von Zifferblättern wird dadurch beschleunigt. (Iaf43d)
  • Es wurde eine Option hinzugefügt, mit der ein aktualisierter Screenshot erstellt werden kann, wenn sich die Systemkonfiguration ändert (z. B. wenn sich das Gebietsschema ändert). Dazu wird die neue Watchface.setUpdateScreenshotOnConfigurationChange verwendet. Diese Einstellung ist standardmäßig deaktiviert. (I765a1)

Fehlerkorrekturen

  • Die manuelle Beschreibung des Zugriffs auf neue Plattform-APIs wurde entfernt, da dies automatisch über die API-Modellierung erfolgt, wenn R8 mit AGP 7.3 oder höher verwendet wird (z. B. R8-Version 3.3), und für alle Builds, wenn AGP 8.1 oder höher verwendet wird (z. B. D8-Version 8.1). Clients, die AGP nicht verwenden, wird empfohlen, auf D8-Version 8.1 oder höher zu aktualisieren. Weitere Details findest du in diesem Artikel. (Ia60e0, b/345472586)

Version 1.3.0-alpha03

17. April 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha03 ist veröffentlicht. Version 1.3.0-alpha03 enthält diese Commits.

API-Änderungen

  • Wir haben EditorSession#setOverrideComplications hinzugefügt, wodurch ComplicationData der zugrunde liegenden Zifferblattinstanz während der Bearbeitung vorübergehend festgelegt wird. Wenn sich Komplikationen nur selten ändern, ist das effizienter, als Überschreibungen über EditorSession#renderWatchFaceToBitmap zu übergeben. (I19384)

Fehlerkorrekturen

  • Bisher wurde toApiComplicationData für alle Zeitachsen von selectComplicationDataForInstant aufgerufen, was dazu führte, dass der nachfolgende ===-Referenzgleichheitstest immer fehlschlug. Das führte dazu, dass Komplikationen bei jedem Frame neu geladen wurden, was den Akku entlud. (717406)

Version 1.3.0-alpha02

3. April 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha02 ist veröffentlicht. Version 1.3.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Wir verwenden jetzt die Referenzgleichheit, um „best“ und selectedData zu vergleichen, da der Gleichheitsoperator ressourcenintensiv ist. (446b00)

API-Änderungen

  • Wir haben eine dynamische API ohne Fallback für GoalProgressComplicationData hinzugefügt. (c33264)

Version 1.3.0-alpha01

7. Februar 2024

androidx.wear.watchface:watchface-*:1.3.0-alpha01 ist veröffentlicht. Version 1.3.0-alpha01 enthält diese Commits.

Neue Funktionen

  • WatchFaceServices kann gleichzeitig initialisiert werden und sollte daher statuslos sein. Um dies zu unterstützen, haben wir StatefulWatchFaceService hinzugefügt, in dem ein benutzerdefiniertes Extra, das von createExtra() erstellt wurde, an alle Überschreibungen übergeben wird, die während der Initialisierung aufgerufen werden.
  • GlesRenderer2 hat jetzt eine Konstruktorüberladung, mit der Sie eine Liste von Attributen angeben können, die nacheinander mit eglChooseConfig ausprobiert werden sollen.

API-Änderungen

  • StatefulWatchFaceService unterstützt jetzt eine Überschreibung von getComplicationSlotInflationFactory, in die das benutzerdefinierte Extra, das von createExtra() erstellt wurde, übergeben wird. (I82d9f)
  • Bei einigen Zifferblättern müssen während createUserStyleSchema erstellte Hilfsdaten mit den anderen Initialisierungsmethoden geteilt werden. Da es keine bessere Alternative gab, haben Entwickler den WatchFaceServices-Zustand in der Regel beibehalten. Das ist gefährlich, weil mehrere Instanzen gleichzeitig erstellt werden können, was zu Fehlern führen kann. Um dieses Problem zu beheben, haben wir StatefulWatchFaceService und StatefulWatchFaceRuntimeService eingeführt. Dabei wird ein benutzerdefinierter Typ von createExtra() erstellt und als Parameter an die verschiedenen Create-Methoden übergeben. (If8a99)
  • Wir haben getUserStyleFlavors zu InteractiveWatchFaceClient hinzugefügt. Das ist vor allem für OEMs interessant. (I0f5d8)
  • GlesRenderer2 hat jetzt eine Konstruktorüberladung, mit der Sie eine Liste von Attributen angeben können, die nacheinander mit eglChooseConfig ausprobiert werden sollen. So können Sie beispielsweise zuerst eine Konfiguration mit Anti-Aliasing ausprobieren und bei Bedarf auf eine ohne Anti-Aliasing zurückgreifen. (I1ba74)
  • Ab Android U wird die Unterstützung für SystemDataSources.DATA_SOURCE_HEART_RATE in WearOS hinzugefügt. Diese Komplikation unterstützt garantiert nur SHORT_TEXT-Komplikationen. Es wird jedoch empfohlen, dass das ComplicationSlot auch SMALL_IMAGE akzeptiert, da OEMs möglicherweise eine Verknüpfung zu ihrer Gesundheits-App anstelle des Live-Werts bereitstellen. (I34223)
  • Wir haben METADATA_KEY_CONFIG_RESTORE_SUPPORTED hinzugefügt. Ab Android U wird damit gesteuert, was passiert, wenn das System aus einem Backup für eine Datenquelle für Zifferblätter mit METADATA_KEY_DATA_SOURCE_CONFIG_ACTION wiederhergestellt wird. Standardmäßig geht das System davon aus, dass der Dienst für die Datenquelle der Komplikation die Sicherung aller Konfigurationsdaten unterstützt. Wenn dies nicht der Fall ist, kann er die Metadateneinstellung METADATA_KEY_DATA_SOURCE_CONFIG_ACTION auf „false“ setzen, wodurch der Komplikations-Slot als nicht konfiguriert gekennzeichnet wird. (I6c505)

Version 1.2

Version 1.2.1

24. Januar 2024

androidx.wear.watchface:watchface-*:1.2.1 ist veröffentlicht. Version 1.2.1 enthält diese Commits.

Fehlerkorrekturen

  • Ein Absturz auf der Samsung Galaxy Watch 4, 5 und 6 wurde behoben. (43f0b0)

Version 1.2.0

29. November 2023

androidx.wear.watchface:watchface-*:1.2.0 ist veröffentlicht. Version 1.2.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.1.0

  • Wir haben Unterstützung für einige neue Zifferblatttypen hinzugefügt, die ab Android T verfügbar sind:
    • GoalProgressComplicationData ähnelt RangedValueComplicationData, bezieht sich jedoch auf den Fortschritt in Richtung eines Ziels, wobei der Mindestwert implizit null ist und der Wert größer als targetValue sein darf.
    • WeightedElementsComplicationData, das aus einem Array von Elementen (Paare aus Gewicht und Farbe) sowie optionalem Text, Titel und Bild besteht. Diese werden möglicherweise als Kreisdiagramm dargestellt. Die Farben müssen im jeweiligen Kontext aussagekräftig sein, da in einer Komplikation in der Regel kein Platz für Labels ist.
  • Wir haben Unterstützung für optionales ColorRanges in RangedValueComplicationData hinzugefügt. Normalerweise werden Komplikationen in den Farben des Zifferblatts gerendert. Manchmal ist es jedoch am besten, die Farben mit ComplicationDataSource festzulegen, z. B. wenn sie eine bestimmte semantische Bedeutung haben. z.B. Rot bis Blau für die Temperatur.
  • Fast jeder Typ von ComplicationData unterstützt jetzt SmallImages.
  • Wir haben ComplicationDisplayPolicy hinzugefügt, wobei DO_NOT_SHOW_WHEN_DEVICE_LOCKED ein kompatibles Zifferblatt anweist, die Zusatzfunktion nicht anzuzeigen, wenn das Gerät gesperrt ist.
  • Ab Android T können OEMs anhand von ComplicationRequest#isForSafeWatchFace ermitteln, ob eine Anfrage für eine Komplikation von einem Zifferblatt in der Liste stammt, die durch die android.support.wearable.complications.SAFE_WATCH_FACES-Metadaten im Manifest des Anbieters definiert wird. Der Anbieter benötigt die Berechtigung com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE, um etwas anderes als „TargetWatchFaceSafety.UNKNOWN“ zu empfangen.
  • UserStyleFlavors ist keine experimentelle Funktion mehr.

Version 1.2.0-rc01

18. Oktober 2023

androidx.wear.watchface:watchface-*:1.2.0-rc01 ist veröffentlicht. Version 1.2.0-rc01 enthält diese Commits.

Version 1.2.0-beta02

6. September 2023

androidx.wear.watchface:watchface-*:1.2.0-beta02 ist veröffentlicht. Version 1.2.0-beta02 enthält diese Commits.

Neue Funktionen

  • SuspendingComplicationDataSourceService#onDestroy ist jetzt geöffnet. Die Unterstützung für eine Standardwetter-Kombination des Systems wurde entfernt.

API-Änderungen

  • „Neue Datenquelle für Wetter-Zusatzfunktionen bereitstellen“ rückgängig machen (I6f335)

Version 1.2.0-beta01

23. August 2023

androidx.wear.watchface:watchface-*:1.2.0-beta01 ist veröffentlicht. Version 1.2.0-beta01 enthält diese Commits.

Neue Funktionen

  • Ab Android T unterstützt WearOS jetzt eine Standard-Wetter-Kombination.

API-Änderungen

  • Standard-System-Fallback für Wetter-Zusatzfunktionen hinzufügen (Ia0994)
  • Mit diesem Patch werden WatchFaceRuntimeService und WatchFaceControlClient.createWatchFaceRuntimeControlClient sowie Guava-Wrapper hinzugefügt. Sie bieten Unterstützung für Zifferblatt-Runtimes, die eine spezielle Art von Zifferblatt sind, deren Definition aus einem anderen Paket geladen wird. Derzeit unterstützt Wear OS nur die Laufzeit für das Android Watch Face Format. (I2799f)
  • Dieser Patch ist eine Fortsetzung von aosp/2636578, in dem wir die Int-Definitionen umbenennen, damit Code, der von WatchFaceType, CanvasType, TapType oder ComplicationsSlotBoundsType abhängt, nicht geändert werden muss. (I4098b)
  • Die API-Dateien wurden aktualisiert, um die Unterdrückung der Kompatibilität zu annotieren. (I8e87a, b/287516207)
  • Mit diesem Patch werden WatchFaceType-Konstanten in WatchFaceTypes, CanvasType-Konstanten in CanvasTypes, TapType-Konstanten in TapTypes und ComplicationsSlotBoundsType-Konstanten in ComplicationsSlotBoundsType verfügbar gemacht. (I3b85a, b/288750666)
  • WatchFace.OverlayStyle wird nur sehr selten verwendet und wird von OEMs nicht gut unterstützt. Daher wird es eingestellt und zu einem späteren Zeitpunkt entfernt. (I7344a)

Version 1.2.0-alpha09

21. Juni 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha09 ist veröffentlicht. Version 1.2.0-alpha09 enthält diese Commits.

Neue Funktionen

  • RangedValueComplicationData.Builder unterstützt jetzt DynamicFloat und eine neue DynamicComplicationText ist als Unterklasse von ComplicationText verfügbar. Beide können dynamische Ausdrücke sowie Plattformbindungen verwenden, die auf unterstützten Wear 4-Geräten mit 1 Hz aktualisiert werden.

API-Änderungen

  • Dynamische Typen für Tagesstrecke, Tageskalorien und Tagesetagen hinzugefügt. Schlüssel für Plattformen mit Gesundheitsinformationsquellen sind jetzt unter PlatformHealthSources.Keys (Ib7637) verfügbar.
  • Implementiere PlatformDataProvider, um Herzfrequenz und tägliche Schritte bereitzustellen. Die SensorGateway-Schnittstelle wird aus der öffentlichen API entfernt. (I55b84)
  • Benennen Sie StateEntryValue in DynamicDataValue um und aktualisieren Sie die Status-APIs, damit sie DynamicDataKey verwenden. (If1c01)
  • AppDataKey zum Zugriff auf den per Push übertragenen App-Status hinzufügen; PlatformDataKey zum Zugriff auf Plattformdaten hinzufügen; Namespace-Unterstützung in StateStore hinzufügen. (I7985e)
  • Die Methoden enable/disablePlatformSource wurden aus DynamicTypeEvaluator entfernt. Der Anrufer sollte für Updates verantwortlich sein. (I78c6d)
  • Die Größe von gebundenen Datentypen kann begrenzt werden. (Ie2966)

Version 1.2.0-alpha08

19. April 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha08 ist veröffentlicht. Version 1.2.0-alpha08 enthält diese Commits.

Neue Funktionen

  • Ab Android T können Komplikationsanbieter mit der privilegierten Berechtigung com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES-Metadaten registrieren, die android.support.wearable.complications.SUPPORTED_TYPES für sichere Zifferblätter überschreiben. Das bedeutet, dass ein Komplikationsanbieter für vertrauenswürdige und nicht vertrauenswürdige Zifferblätter unterschiedliche Typen bereitstellen kann.

API-Änderungen

  • Weitergabe der Klasse @Deprecated an die Property (I882d1, b/271441831)
  • Der Name des Wertparameters für Enum.valueOf wurde geändert (Ia9b89)
  • Weitere ausgelöste Ausnahmen von enum valueOf (I818fe)
  • Wir haben renderWatchFaceToSurface entfernt und durch createRemoteWatchFaceView ersetzt. createRemoteWatchFaceView basiert auf SurfaceControlViewHost und ermöglicht dem Aufrufer, eine Ansicht vom Zifferblatt einzubetten, die gerendert wird, wenn der Client RemoteWatchFaceViewHost#renderWatchFace aufruft. (Ib311d)
  • Wir haben renderWatchFaceToSurface zu InteractiveWatchFaceClient, HeadlessWatchFaceClient und EditorSession hinzugefügt. Das ist in der Regel leistungsfähiger als das Rendern in eine Bitmap. (Ieacad)
  • ObservableStateStore wurde in StateStore umbenannt. (Ieb0e2)
  • DynamicTypeEvaluator.Builder wurde anstelle von Konstruktorargumenten hinzugefügt, um mehr optionale Argumente zu ermöglichen, einschließlich ObservableStateStore, das jetzt standardmäßig auf einen leeren Speicher festgelegt ist. (I6f832)
  • Die Reihenfolge der Parameter in DynamicTypeEvaluator wurde überarbeitet. (Ic1ba4)
  • Der Executor wurde den DynamicTypeEvaluator.bind-Methoden hinzugefügt. (I346ab)
  • Wir haben der BoundDynamicType die Methode startEvaluation hinzugefügt, um die Auswertung nach der Bindung des dynamischen Typs auszulösen. (I19908)
  • Anbieter von Komplikationen mit der privilegierten Berechtigung com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE können androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES-Metadaten registrieren, die android.support.wearable.complications.SUPPORTED_TYPES für sichere Zifferblätter überschreiben. (Id1c73)
  • Wir haben CustomValueUserStyleSettings2 in LargeCustomValueUserStyleSettings umbenannt. (Ic17ac)

Fehlerkorrekturen

  • DynamicTypeValueReceiver#onPreUpdate wurde entfernt. (I2dc35)

Version 1.2.0-alpha07

22. Februar 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha07 ist veröffentlicht. Version 1.2.0-alpha07 enthält diese Commits.

Neue Funktionen

  • Ab Android T können OEMs anhand von ComplicationRequest#isForSafeWatchFace feststellen, ob eine Anfrage für eine Komplikation von einem Zifferblatt in der Liste stammt, die durch die android.support.wearable.complications.SAFE_WATCH_FACES-Metadaten im Manifest ihres Anbieters definiert wird. Der Anbieter benötigt die Berechtigung com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE, um etwas anderes als TargetWatchFaceSafety.UNKNOWN zu empfangen.

  • Ab Android T ist auch CustomValueUserStyleSetting2 verfügbar, das bis zu 12,5 KB enthalten kann. Das bisherige Limit für CustomValueUserStyleSetting lag bei 1 KB. Trotz der erhöhten Größenbeschränkungen sollten Zifferblattentwickler die Daten klein halten, da die Einstellungen während der Bearbeitung über Bluetooth gesendet werden und die Bluetooth-Bandbreite begrenzt ist.

API-Änderungen

  • Wir haben den Funktionen GlesRenderer und GlesRenderer2 den optionalen Parameter eglContextAttribList hinzugefügt, mit dem Sie den an EGL14.eglCreateContext übergebenen EGL14.EGL_CONTEXT_CLIENT_VERSION festlegen können. (I2a83e)
  • Wir haben die Zifferblattbibliotheken von java.util.function.Consumer zu androidx.core.util.Consumer migriert. (I273f5)
  • Weitere ausgelöste Ausnahmen von KT-Property-Accessors (Iff9d9)
  • Wir haben InteractiveWatchFaceClient.isComplicationDisplayPolicySupported hinzugefügt, damit der Client ermitteln kann, ob er die Unterstützung für alte Zifferblätter emulieren muss. (I24c89)
  • Wir haben entschieden, dass isForSafeWatchFace ein Tristate-IntDef sein sollte. (Ief2f7)
  • Für Android T haben wir ComplicationRequest.isForSafeWatchFace eingeführt, das für die Verwendung durch OEMs vorgesehen ist und com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE erfordert. Bei Datenquellen im System-Image wird „true“ zurückgegeben, wenn sich das anfragende Zifferblatt in der Liste der sicheren Zifferblätter befindet, die von der Datenquelle im Manifest angegeben werden. (I0cbb6)
  • Für Android T haben wir CustomValueUserStyleSetting2 hinzugefügt, das bis zu 12,5 KB enthalten kann. Das bisherige Limit für CustomValueUserStyleSetting lag bei 1 KB. (I0b100)

Version 1.2.0-alpha06

25. Januar 2023

androidx.wear.watchface:watchface-*:1.2.0-alpha06 ist veröffentlicht. Version 1.2.0-alpha06 enthält diese Commits.

Neue Funktionen

  • Wir arbeiten daran, Unterstützung für Komplikationsplattformbindungen hinzuzufügen. Das ist noch nicht einsatzbereit, aber wir halten dich auf dem Laufenden.
  • Wir haben XML-ComplicationSlot-Unterstützung für die neuen Komplikationstypen GOAL_PROGRESS und WEIGHTED_ELEMENTS hinzugefügt.

Fehlerkorrekturen

  • Es wurde ein Speicherleck behoben, bei dem der Zifferblatt-Editor auf Samsung-Geräten nicht richtig freigegeben wurde. (3b5987)
  • Ein Fehler wurde behoben, bei dem die Komplikationen beim Wechsel zwischen einer Zifferblatt mit mehreren Favoriten manchmal nicht richtig angezeigt wurden. (b38ece)
  • Es wurde ein Serialisierungsfehler mit „perOptionScreenReaderNames“ behoben, der zu Abstürzen von Zifferblättern geführt hat. (e9f466)

Version 1.2.0-alpha05

7. Dezember 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha05 ist veröffentlicht. Version 1.2.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Vor einiger Zeit haben wir die Unterstützung für hierarchische UserStyleSettings hinzugefügt. Ab Android T ist es nun möglich, mehr als eine ComplicationSlotsUserStyleSetting in einer Hierarchie zu haben. Je nach den vom Nutzer ausgewählten Stilen ist nur ein ComplicationSlotsUserStyleSetting aktiv.

  • Wir verbessern die Screenreader-Unterstützung für ListOption und ComplicationSlotsOption, indem wir das Feld screenReaderName hinzufügen. Vor Android T wird dieses Feld von Companion-Editoren ignoriert.

API-Änderungen

  • Wir haben den Feldern ListOption und ComplicationSlotsOption das neue optionale Feld screenReaderName hinzugefügt, das von Companion-Editoren auf Geräten vor Android T ignoriert wird. (I75326)
  • Ab Android T werden mehrere ComplicationSlotsUserStyleSettings in einer Stilhierarchie unterstützt, sofern jeweils nur eine davon aktiv sein kann. Wir haben UserStyleSchema die Hilfsfunktion findComplicationSlotsOptionForUserStyle hinzugefügt, um das aktive ComplicationSlotsOption zu finden, falls vorhanden. (Ic2b06)
  • RangedValuesTypes wurden in das Companion-Objekt von RangedValueComplicationData übernommen und in TYPE_UNDEFINED und TYPE_RATING umbenannt. Außerdem wurde ein neues TYPE_PERCENTAGE hinzugefügt. (I55d02)
  • Wir haben die experimentelle Funktion DynamicFloat in FloatExpression umbenannt und als @hide gekennzeichnet. (Idf4f1)
  • Annotation @JvmDefaultWithCompatibility wurde hinzugefügt. (I8f206)

Version 1.2.0-alpha04

9. November 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha04 ist veröffentlicht. Version 1.2.0-alpha04 enthält diese Commits.

Neue Funktionen

  • Unter Android T werden zwei neue Komplikationstypen unterstützt: GoalProgressComplicationData und WeightedElementsComplicationData.
  • GoalProgressComplicationData ähnelt RangedValueComplicationData, aber der Wert darf über das Ziel hinausgehen (bei RangedValueComplicationData wird der Wert auf den Bereich [min .. max] begrenzt). Dies hat Auswirkungen auf das visuelle Design, die möglicherweise nicht für alle Zifferblätter geeignet sind.
  • GoalProgressComplicationData bietet Unterstützung für Kreisdiagramme und ähnliche Aufschlüsselungen einfacher Daten.
  • RangedValueComplicationData wurde eine optionale Unterstützung für ColorRamps hinzugefügt.
  • Für Android T haben wir ComplicationPersistencePolicy und setCachePolicy zu ComplicationData hinzugefügt. Damit kann ein Anbieter derzeit steuern, ob eine Komplikation beibehalten wird oder nicht (d. h. ob sie nach dem Neustart im Cache gespeichert wird). Bei den meisten Komplikationen ist keine Cache-Steuerung erforderlich. In einigen Sonderfällen mit veralteten Daten kann sie jedoch hilfreich sein, z. B. bei Komplikationen mit Gesundheitsdaten, die häufig aktualisiert werden. Außerdem haben wir ComplicationDisplayPolicy hinzugefügt, wobei DO_NOT_SHOW_WHEN_DEVICE_LOCKED ein kompatibles Zifferblatt anweist, die Zusatzfunktion nicht anzuzeigen, wenn das Gerät gesperrt ist. (Ic9574)

API-Änderungen

  • GoalProgressComplicationData, WeightedElementsComplicationData und ColorRamp sind nicht mehr experimentell. (Ica9e2)
  • ComplicationPersistencePolicy und ComplicationDisplayPolicy sind jetzt korrekt als T-APIs gekennzeichnet. (I31d88)
  • Der eingestellte ComplicationSlotOverlay-Konstruktor hat jetzt DeprecationLevel.WARNING, sodass er wieder aus Java aufgerufen werden kann. (Ib308c)
  • Wir haben einige Java-Kompatibilitätsprobleme mit ComplicationRequestListener, CanvasComplication, ComplicationTapFilter und InteractiveWatchFaceClient behoben, indem wir sie mit @JvmDefaultWithCompatibility (Id94fc) annotiert haben.
  • Wir haben die experimentellen Funktionen ProtoLayoutComplicationData und ListComplicationData entfernt. Die Entwicklergeschichte für diese war unklar. Wir hoffen, dass wir sie in Zukunft noch einmal aufgreifen können. (I9df05)
  • Wir haben RangedValueComplicationData wieder eine ValueType hinzugefügt. WeightedElementsComplicationData unterstützt jetzt eine Hintergrundfarbe. Wir haben DiscreteRangedValueComplicationData entfernt, da die Funktionen eine Teilmenge von WeightedElementsComplicationData sind. (I6446c)

Fehlerkorrekturen

  • Fügen Sie isForScreenShot in das Gleichheitszeichen und den Hashcode ein. Prüfen Sie, ob für onRenderParametersChanged der richtige isForScreenshot-Wert angegeben ist (I04a41).
  • Es wurden Lecks von WatchFaceControlService bei Headless-Clients behoben. (e90e00)

Version 1.2.0-alpha03

5. Oktober 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha03 ist veröffentlicht. Version 1.2.0-alpha03 enthält diese Commits.

Neue Funktionen

  • Es gibt keine neuen Funktionen, aber wir haben einige Fehler im Zifferblatt-Editor behoben.

API-Änderungen

  • UserStyleSchema.userStyleSettings wurde verworfen, da rootUserStyleSettings nicht mehr experimentell ist (Ie96e3)
  • rootUserStyleSettings aus dem experimentellen Bereich entfernen (I8d6b3)
  • Wir haben WatchFaceColors als experimentell gekennzeichnet, da es nicht von allen Systemen unterstützt wird (I6d75d).
  • Machen Sie DisconnectReasons in der öffentlichen API verfügbar, damit sie mit IntDef funktioniert. (I791f8)

Fehlerkorrekturen

  • Schließe alle geöffneten On-Watch-Editoren, wenn SysUI beendet wird. Wenn SysUI beendet wird und der Editor für Zifferblätter nicht geschlossen wird, kann das Zifferblatt in einem inkonsistenten Zustand zurückbleiben, da das System darauf angewiesen ist, dass SysUI alle Änderungen am Nutzerstil beibehält.(ba762a
  • Ein Speicherleck in ComplicationDataSourceInfoRetriever wurde behoben, bei dem eine Kotlin-Coroutine-Fortsetzung als GC-Root fungierte und die Editoraktivität beibehielt.(33ee06)

Version 1.2.0-alpha02

21. September 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha02 ist veröffentlicht. Version 1.2.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Bei einigen Zifferblättern gibt es Konfigurationen außerhalb von UserStyle, die sich auf das Aussehen auswirken, z.B. die Auswahl eines Hintergrundfotos. Wir haben Renderer.sendPreviewImageNeedsUpdateRequest hinzugefügt, damit das Zifferblatt ein aktualisiertes Vorschaubild anfordern kann. Dazu ist ein entsprechendes Systemupdate erforderlich.

  • Außerdem haben wir eine API für Zifferblätter hinzugefügt, mit der ihre Farben für das System verfügbar gemacht werden. Das System kann seine Farbpalette dann auf Grundlage dieser Farben auswählen. Hinweis: Dies wurde in einem nachfolgenden Patch als experimentell eingestuft.

  • Fast alle Arten von ComplicationData unterstützen jetzt SmallImages.

API-Änderungen

  • Manchmal kann sich der Hintergrundmanager von einer Engine trennen und eine andere erstellen. Wir haben eine DisconnectReason-Int-Definition hinzugefügt und ClientDisconnectListener um eine neue Methode erweitert, die eine DisconnectReason enthält, damit der Listener das Trennen der Engine beobachten kann. (I45cce)
  • Dem ComplicationSlotOverlay-Konstruktor wurden zwei optionale Parameter nameResourceId und screenReaderResourceId hinzugefügt (I157e8).
  • Wir haben einen Guava-Wrapper für die neue Überladung von getOrCreateInteractiveWatchFaceClient mit einem PreviewImageUpdateRequestedListener hinzugefügt. (Ic31f0)
  • Wir haben Renderer.sendPreviewImageNeedsUpdateRequest hinzugefügt. Das ist nützlich für Zifferblätter, die einen Status außerhalb von UserStyleSchema haben, der sich auf ihr Aussehen auswirkt, z. B. ein Zifferblatt mit einem auswählbaren Hintergrundbild. Auf der Clientseite haben wir PreviewImageUpdateRequestedListener als optionalen Parameter für getOrCreateInteractiveWatchFaceClient hinzugefügt, um diese Anfragen zu beobachten. (Iff44a)
  • Wir haben die API zum Bereitstellen von WatchFaceColors vereinfacht. Jetzt gibt es im Renderer eine einfache Eigenschaft namens watchFaceColors, die vom Zifferblatt festgelegt werden kann. Sie sollte bei Bedarf als Reaktion auf Stiländerungen aktualisiert werden. Anstelle von WallpaperManager zum Beobachten von Farbänderungen haben wir OnWatchFaceColorsListener zu InteractiveWatchFaceClient hinzugefügt. (I490bc)
  • Wir haben die Klasse WatchFaceColors hinzugefügt, die die drei wichtigsten Zifferblattfarben enthält, und dem Renderer die offenen Methoden watchfaceColors und notifyWatchFaceColorsChanged hinzugefügt. Dadurch kann das System die Farben des Zifferblatts über WallpaperManager.getWallpaperColors abrufen. (I3d611)
  • ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData und die experimentellen DiscreteRangedValueComplicationData, GoalProgressComplicationData und WeightedElementsComplicationData unterstützen jetzt alle SmallImages. Wenn ein Zifferblatt eine Komplikation mit mehreren Farben rendert, kann es jetzt ein mehrfarbiges SmallImage verwenden. Bisher musste es ein monochromatisches Bild verwenden. (I257df)
  • Faktorwechsel: PreviewImageUpdateRequestedListener sollte stattdessen Consumer<> sein (Ia875d)
  • Ersetzen Sie den benutzerdefinierten SAM-Typ (Single Abstract Method) OnWatchfaceColorsListener durch den generischen Java-SAM-Typ (Consumer) (I0c489).
  • Wir haben die alten Methoden getOrCreateInteractiveWatchFaceClient und listenableGetOrCreateInteractiveWatchFaceClient, bei denen keine PreviewImageUpdateRequestedListener angegeben ist, eingestellt. (Iec502)

Fehlerkorrekturen

  • DisconnectReason.BINDER_DIED wurde in DisconnectReason.ENGINE_DIED umbenannt. (I4eb0e)

Version 1.2.0-alpha01

10. August 2022

androidx.wear.watchface:watchface-*:1.2.0-alpha01 ist veröffentlicht. Version 1.2.0-alpha01 enthält diese Commits.

Neue Funktionen

  • Wir haben experimentelle Unterstützung für verschiedene neue Komplikationsformate hinzugefügt. Diese neuen Formate werden derzeit aktiv entwickelt. Sie können ohne Vorankündigung geändert werden und werden derzeit nicht von CanvasComplicationDrawable gerendert.
  • Außerdem haben wir optional Ränder für Zifferblattelemente hinzugefügt, damit sich kleine Zifferblattelemente leichter antippen lassen.

API-Änderungen

  • Die experimentelle Klasse BoundingArc ist jetzt unveränderlich. (If624a)
  • Kleine Zusatzfunktionen sind manchmal schwer zu berühren. Um dieses Problem zu beheben, haben wir die Unterstützung für Ränder eingeführt, die den tappbaren Bereich vergrößern, ohne das Rendering zu beeinträchtigen. Sofern nicht anders angegeben (entweder im Code oder über XML), haben ComplciationSlots Ränder mit der Größe 0. (I14089)
  • Die Signatur von getComplicationSlotInflationFactory(CurrentUserStyleRepository) wurde geändert, um eine Factory-Instanz zurückzugeben, die nicht null ist. Bisher war es ein Fehler, „null“ zurückzugeben. Durch diese Änderung wird der API-Vertrag nur deutlicher. (I0fcc0)
  • Wir haben der Methode WatchFaceService.getComplicationSlotInflationFactory das Argument currentUserStyleRepository hinzugefügt, um sie an createComplicationSlotsManager anzugleichen. (I2ddd2)
  • UserStyleFlavors ist keine experimentelle Funktion mehr. (I69cdc)
  • Wir haben die experimentelle ValueType aus RangedValueComplicationData entfernt und stattdessen die experimentelle DiscreteRangedValueComplicationData eingeführt. Diese entspricht RangedValueComplicationData, mit Ausnahme des Ganzzahlbereichs und des Werts. Außerdem haben wir die experimentelle Funktion GoalProgressComplicationData eingeführt, die RangedValueComplicationData ähnelt. Sie wird jedoch für den Fortschritt in Richtung eines Ziels verwendet, bei dem „min“ implizit null ist und der Wert größer als targetValue sein darf. Hinweis: Bei allen RangedValue-Varianten muss mindestens monochromeImage, text oder title angegeben werden. (I9590c)
  • Wir haben boundsWithMargins aus ComplicationSlotState entfernt, da es für Systemsoftware keinen Anwendungsfall gibt. (I42e26)
  • Wir haben die experimentelle Unterstützung für WeightedElementsComplicationData hinzugefügt. Diese besteht aus einem Array von Elementen (Paare aus Gewicht und Farbe) sowie optionalem Text, Titel und Bild. Diese werden möglicherweise als Kreisdiagramm dargestellt. Die Farben müssen im jeweiligen Kontext aussagekräftig sein, da in einer Komplikation in der Regel kein Platz für Labels ist. (I87eea)
  • Mit dem optionalen experimentellen ColorRamps, das von RangedValueComplicationData und GoalProgressComplicationData verwendet wird, können Sie jetzt eine Sequenz von bis zu sieben Farben und ein Flag angeben, das angibt, ob die Farben stufenlos ineinander übergehen oder ob gleich große, einfarbige Farbschritte gerendert werden sollen. (I9f5bf)
  • RangedValueComplicationData.drawSegmented wurde in valueType geändert. Das ist ein Integer mit einem entsprechenden ValueType IntDef, der dem Bereichswert eine semantische Bedeutung verleiht und vom Komplikations-Renderer verwendet werden kann, um das Styling zu beeinflussen. (I0616b)
  • Wir haben experimentelle Unterstützung für optionales ColorRanges in RangedValueComplicationData hinzugefügt. Normalerweise werden Komplikationen in den Farben des Zifferblatts gerendert. Manchmal ist es jedoch am besten, die Farben mit ComplicationDataSource festzulegen, z. B. wenn sie eine bestimmte semantische Bedeutung haben. z.B. Rot bis Blau für die Temperatur. (I5153a)
  • Wir haben RangedValueComplicationData einen experimentellen drawSegmented-Hinweis hinzugefügt. Dadurch wird den Renderern signalisiert, dass der Bereichswertindikator mit Segmenten gezeichnet werden soll, wobei 1 Segment = 1 Einheit ist. (I7d7c1)

Fehlerkorrekturen

  • Wir haben die Möglichkeit hinzugefügt, ComplicationSlotBounds relativ zu einem vordefinierten Bildschirmkoordinatensystem zu definieren. (I0985d)

Version 1.1

Version 1.1.1

10. August 2022

androidx.wear.watchface:watchface-*:1.1.1 ist veröffentlicht. Version 1.1.1 enthält diese Commits.

  • Dies ist ein Release mit Fehlerkorrekturen. Nutzern von Version 1.1.0 wird dringend empfohlen, ein Upgrade durchzuführen.

Fehlerkorrekturen

  • Die Initialisierung des Zifferblatts erfolgt asynchron. Wenn eine Zusatzfunktion empfangen wird, bevor das Zifferblatt bereit ist, wird sie in die Liste pendingInitialComplications aufgenommen und später angewendet. Leider wurde pendingInitialComplications zu früh angewendet. Das bedeutet, dass es während der Initialisierung des Zifferblatts ein Zeitfenster gab, in dem die Komplikationen weiterhin auf pendingInitialComplications gesetzt und ignoriert wurden. Das Problem wurde nun behoben. Außerdem wird mit diesem Patch ein Fehler behoben, bei dem ComplicationRenderer fälschlicherweise versucht hat, Platzhalter asynchron zu laden. Dies ist fehlgeschlagen, sodass die Kompilierungsgrafik nie aktualisiert wurde. Schließlich wird mit diesem Patch ein hoffentlich theoretischer Fehler behoben, bei dem mehrere pendingInitialComplications zusammengeführt werden müssen. (0d03ba3)

  • Potenziellen Deadlock in InteractiveInstanceManager behoben, bei dem getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance die Sperre länger als nötig gehalten hat. Normalerweise sollte engine.setUserStyle schnell ausgeführt werden. Wenn das aus irgendeinem Grund nicht der Fall ist, kann es zu einem Deadlock oder ANR kommen. Mit diesem Patch werden unnötige Arbeiten aus der Sperre entfernt, wodurch das Risiko eines Deadlocks verringert wird.(5a2adca)

  • Es wurden mehrere Probleme behoben, die WatchFaceService betrafen. Manchmal behält der WakeLock den WatchFaceService bei. Das Problem lässt sich durch Hinzufügen eines release()-Aufrufs beheben. Außerdem kann StateFlows WatchFaceService beibehalten, wodurch die zugrunde liegende CoroutineScopes gekündigt wird. Das Problem wird durch die Kündigung behoben.(fd48138)

  • Füge Zeitüberschreitungen zu awaitDeferredWatchFace* hinzu und behebe watchfaceOverlayStyle NullPointerException. Unter normalen Umständen sollte es nicht zu einem Zeitüberschreitungsfehler kommen, auch nicht nach einer Neuinstallation und in DirectBoot-Szenarien, in denen die CPU-Auslastung hoch ist. Außerdem haben wir einen NPE-Fehler behoben, der auftritt, wenn getWatchfaceOverlayStyle nach close() aufgerufen wird.(a4c3a5a)

Version 1.1.0

15. Juni 2022

androidx.wear.watchface:watchface-*:1.1.0 ist veröffentlicht. Version 1.1.0 enthält diese Commits.

Wichtige Änderungen seit Version 1.0.0

Verbesserte Bearbeitung:

  • Wir haben Unterstützung für hierarchische Schemas hinzugefügt, sodass eine Hierarchie von Stilen über die Editor-Benutzeroberflächen beschrieben werden kann. Sie können jetzt separate Symbole für die Verwendung in Zifferblatt- und Companion-Editoren angeben.
  • Es gibt eine Opt-in-Unterstützung für mehrere Instanzen eines Zifferblatts. Jede Instanz hat eine eindeutige ID, die auf allen API-Oberflächen verfügbar ist.
  • Sie können jetzt für ComplicationSlots menschenlesbare Namen für die Verwendung in Editoren angeben.
  • Unterstützung von „Geschmacksrichtungen“ für das Styling, einer kuratierten Auswahl von Stilen, die im Companion-Editor sichtbar sind.
  • Wenn zwei Instanzen des Zifferblatts bearbeitet werden, können sich Zifferblattinstanzen jetzt Ressourcen teilen, wodurch Speicherplatz gespart wird.
  • Wenn Sie im Zifferblatt-Editor auf der Smartwatch eine Zusatzfunktion auswählen, wird der aktuelle Anbieter jetzt vorausgewählt.

Verbesserte Komplikationen:

  • Sie können jetzt die ComplicationType für die primären und sekundären Datenquellen angeben. Das gibt Entwicklern mehr Flexibilität bei der Einrichtung.
  • Wir haben ComplicationDataTimeline hinzugefügt. Damit wird eine Sequenz von zeitgesteuerten Daten bereitgestellt, die an das Zifferblatt gesendet, zwischengespeichert und automatisch aktualisiert werden können. Das kann beispielsweise die Wettervorhersage für heute zu verschiedenen Zeiten oder mehrere anstehende Kalendertermine sein.
  • Die ComponentName des Complication-Anbieters ist Teil der ComplicationData.
  • Zusatzfunktionen werden jetzt im Cache gespeichert, was für ein besseres Nutzererlebnis beim Wechseln zwischen Zifferblättern sorgt.

Sonstige Änderungen:

  • UserStyleSchema und ComplicationSlots können jetzt in XML definiert werden. Das vereinfacht die Entwicklung von Zifferblättern und ermöglicht schnellere Metadatenabfragen durch das System.
  • Zifferblätter können jetzt die Farben beeinflussen, die zum Rendern des System-Overlays verwendet werden.

Version 1.1.0-rc01

18. Mai 2022

androidx.wear.watchface:watchface-*:1.1.0-rc01 ist veröffentlicht. Version 1.1.0-rc01 enthält diese Commits.

Neue Funktionen

  • Wir haben einige Änderungen an der Unterstützung von Zifferblatt-XML vorgenommen, um die Angabe von ComplicationSlotBounds und Referenzen zu vereinfachen. Die Entwicklung von Edge-Komplikationen BoundingArc wird fortgesetzt und sie werden an drawHighlight weitergeleitet, obwohl die Verwendung zu diesem Zeitpunkt nicht empfohlen wird.

API-Änderungen

  • Wir haben eine experimentelle Überladung von drawHighlight hinzugefügt, die einen BoundingArc-Parameter akzeptiert. (I705f8)
  • Das XML-Format für Zifferblätter unterstützt jetzt Ressourcenverweise. So können Sie dieselben Konstanten sowohl in XML als auch in Ihrem Code verwenden. (I3ef61)
  • Wir haben die Möglichkeit hinzugefügt, ComplicationSlotBounds in der Form center_x, center_y, size_x, size_y zu definieren. Jetzt ist es auch möglich, mit Ressourcenreferenzen verschiedene Einheiten (z.B. „dp“) zu verwenden. (Iace98)

Fehlerkorrekturen

  • Fehler bei runBlockingWithTracing behoben, wodurch Aufgaben im falschen Kontext ausgeführt wurden.(4f595fe)
  • BaseEditorSession.close synchronisieren Das Problem mit der asynchronen Ausführung von BaseEditorSession.close besteht darin, dass wir ComplicationDataSourceInfoRetriever zu spät freigeben, was zu Warnungen in Logcat führt. Das war wahrscheinlich harmlos, aber Logcat-Spam ist störend und sollte vermieden werden.(35a5308)

Version 1.1.0-beta02

11. Mai 2022

androidx.wear.watchface:watchface-*:1.1.0-beta02 ist veröffentlicht. Version 1.1.0-beta02 enthält diese Commits.

Neue Funktionen

  • Wir haben experimentelle Unterstützung für neue ComplicationData-Typen hinzugefügt. Diese sind noch nicht einsatzbereit, aber wir arbeiten daran.

API-Änderungen

  • Wir haben BoundingArc hinzugefügt, eine experimentelle Klasse, die die Geometrie eines Komplikations-Slots am Rand beschreibt. Dies wurde ComplicationSlot hinzugefügt und an ComplicationSlotState und WatchFaceMetadataClient weitergeleitet. (I61a40)
  • Es ist jetzt möglich, Einstellungen in der UserStyleSetting-XML zu übernehmen. So können Sie die Ausführlichkeit reduzieren und eine Einstellung für mehrere Zifferblätter freigeben. (Ief841)
  • Wir haben zwei neue experimentelle Arten von ComplicationData hinzugefügt: ListComplicationData und ProtoLayoutComplicationData. Derzeit werden beide Typen nicht gerendert und WearOS erkennt sie auch nicht, wenn sie einem ComplicationDataSource's-Manifest hinzugefügt werden. (I1811c)

Fehlerkorrekturen

  • Problem mit der Serialisierung des Typs TimeLineEntry behoben. Wir haben den Typ TimeLineEntry nicht serialisiert. Das führte dazu, dass zwischengespeicherte TimeLineEntries vom Typ „NoData“ fälschlicherweise als Typ der übergeordneten Komplikation interpretiert wurden. Das führte zu NPEs, wenn auf nicht vorhandene erforderliche Felder zugegriffen wurde. (55ffdf5)
  • Ein Fehler wurde behoben, bei dem setComplicationData Zeitachsenfelder entfernt hat(fb392f5).
  • Ein Fehler wurde behoben, durch den runBlockingWithTracing sehr selten zu einem NPE(12ca62e) führte.
  • Ein Fehler wurde behoben, bei dem beim Empfangen einer Komplikation manchmal ClassNotFoundException: android.support.wearable.complications.ComplicationText angezeigt wurde.(217942d9)
  • Ein Fehler in GlesRenderer.backgroundThreadInitInternal wurde behoben, bei dem onBackgroundThreadGlContextCreated nur aufgerufen wurde, wenn EGL14.eglCreateContext aufgerufen wurde. Ein weiterer Fehler wurde behoben, bei dem im Screenshot ein visueller Fehler aufgrund von verticalFlip aufgetreten ist.(c674ad2)
  • Der WatchFaceService-XML-Versionscheck wurde korrigiert. Er wurde aus dem falschen Paket geladen.(dfa06f3)
  • Das Platzhalter-Wire-Format verwendet jetzt ein inneres Bundle. Wir möchten nicht, dass Platzhalter vorhandene Zifferblätter beschädigen, die möglicherweise die verborgene innere a.s.w.c.ComplicationData verwenden. Bisher wurde der Platzhalter im Wire-Format von NoDataComplication-Daten in den üblichen Feldern gespeichert. Das war problematisch, weil alte Zifferblätter den Platzhalterstring renderten, was nicht beabsichtigt war. Stattdessen verwenden wir jetzt ein internes Bundle, um dies vollständig zu isolieren. (d5e7bd2)

Version 1.1.0-beta01

20. April 2022

androidx.wear.watchface:watchface-*:1.1.0-beta01 ist veröffentlicht. Version 1.1.0-beta01 enthält diese Commits.

API-Änderungen

  • Die WatchFaceMetadataClient-Methoden (getUserStyleSchema, getComplicationSlotMetadataMap, getUserStyleFlavors) und HeadlessWatchFaceClient.getUserStyleFlavors lösen jetzt eine ungeprüfte RuntimeException anstelle von WatchFaceException aus. (I0718a)
  • WatchFaceMetadataClient.WatchFaceException wurde aus der Klasse entfernt, damit es wiederverwendet werden kann. (I4e869)

Fehlerkorrekturen

  • WatchFaceMetadataClient stürzt nicht mehr ab, wenn teilweise ComplicationSlotBounds gesendet werden.(Iaafd)

Version 1.1.0-alpha05

6. April 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha05 ist veröffentlicht. Version 1.1.0-alpha05 enthält diese Commits.

Neue Funktionen

  • Sie können jetzt herausfinden, von welcher Datenquelle ein ComplicationData gesendet wurde, indem Sie ComplicationData.dataSource prüfen. Einige Zifferblätter verwenden diese Informationen möglicherweise, um die Darstellung von Komplikationen anzupassen. (I44a73)

API-Änderungen

  • Renderer.CanvasRenderer und Renderer.GlesRenderer wurden zugunsten von Renderer.CanvasRenderer2 und Renderer.GlesRenderer2 eingestellt, die SharedAssets unterstützen, die an die Rendermethoden übergeben werden. Für die Java-Interop haben wir ListenableCanvasRenderer2 und ListenableGlesRenderer2 eingeführt. (I31ffa)
  • @WatchFaceFlavorsExperimental-Funktion zum Definieren von Varianten hinzugefügt – vorkonfigurierte Liste mit stilisierten Zifferblättern (I04dd0)
  • Renderer.sharedAssets ist jetzt ein StateFlow und wir haben den ungenutzten Renderer.SharedAssetsFactory (I12ac5) entfernt.
  • UserStyleSchema.userStyleSettings ist nicht mehr veraltet (Iba7e3)
  • Wir haben HeadlessWatchFaceClient.getUserStyleSchemaDigestHash hinzugefügt, damit ein HeadlessWatchFaceClient den relativ geringen Aufwand für die Übergabe des Schemas über AIDL vor der Berechnung des Digest-Hash vermeiden kann. (I33597)
  • Wir haben isUserStyleSchemaStatic zu WatchFaceMetadataClient hinzugefügt. Der Wert ist nur dann „true“, wenn sich UserStyleSchema nur ändert, wenn das Zifferblatt-APK aktualisiert wird. (I45a3f)
  • Wir haben getDigestHash zu UserStyleSchema hinzugefügt, um einen Digest-Hash des Schemas zu berechnen. So lässt sich effizient feststellen, ob sich die UserStyleSchema geändert hat. (I2063d)
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED wurde in METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED umbenannt (I9ba5d)
  • UserStyleSetting.OnWatchEditorData wurde in UserStyleSetting.WatchFaceEditorData umbenannt. Es enthält Daten, die ausschließlich vom Editor für Zifferblätter verwendet werden. (If3afb)

Version 1.1.0-alpha04

9. März 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha04 ist veröffentlicht. Version 1.1.0-alpha04 enthält diese Commits.

API-Änderungen

  • Aktuelle ComplicationData sind möglicherweise nicht immer verfügbar (z. B. abgelaufene zwischengespeicherte ComplicationData). Daher haben wir NoDataComplication um einen optionalen Platzhalter für ComplicationData erweitert und ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER und PhotoImage.PLACEHOLDER hinzugefügt, die nur im Kontext eines NoDataComplicationData-Platzhalters verwendet werden dürfen. Wenn diese Option ausgewählt ist, werden die Platzhalter mit grauen Kästchen/Bögen gerendert. (I6285d)
  • Wir haben ComplicationData.getNextChangeInstant hinzugefügt. Damit wird der nächste Zeitpunkt nach dem Referenzzeitpunkt angegeben, zu dem sich ein Feld der Komplikation ändern kann. Dies wird intern verwendet, um Frames für Zusatzfunktionsupdates zu planen. Wenn ein Zifferblatt beispielsweise normalerweise einmal pro Minute aktualisiert wird, wird es durch das Festlegen der Stoppuhr-Kombination einmal pro Sekunde aktualisiert. (I7ceb2)
  • EditorSession.watchFaceId kann jetzt auf allen API-Ebenen verwendet werden. Außerdem stimmt der Wert jetzt immer mit WatchState.watchFaceInstanceId überein. (I323b9)
  • Die getPendingIntentForTouchEvent API ist nicht mehr erforderlich, da das zugrunde liegende Problem im Framework behoben wurde. Daher wurden alle zugehörigen APIs entfernt. Zifferblätter müssen nichts Besonderes tun, damit PendingIntents ausgelöst wird, auch wenn die Home-Schaltfläche vor Kurzem gedrückt wurde. (I1f2e8)
  • Wir haben RendererParameters.isForScreenShot hinzugefügt, das „true“ ist, wenn der Render für einen Screenshot bestimmt ist. Bei einigen Zifferblättern mit Animationen ist diese Information erforderlich, um Anpassungen vorzunehmen und so optimale Ergebnisse zu erzielen. (I96d99)
  • Wir haben WatchFaceExceptionReason in WatchFaceException hinzugefügt, um den Fehler zu verdeutlichen. (I01d15)
  • ComplicationDataSourceService.onImmediateComplicationRequest wurde entfernt. Stattdessen wurde ComplicationRequest.immediateResponseRequired hinzugefügt, um zu signalisieren, dass der Anbieter schnell reagieren muss (idealerweise in weniger als 100 ms). Diese Funktion ist durch die Berechtigung com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE geschützt. (Ie6b23)
  • Die Nullable-Annotationen in Core und AppCompat wurden aktualisiert, um mit Tiramisu DP2 übereinzustimmen (I0cbb7).

Fehlerkorrekturen

  • Zifferblatt-App stürzt jetzt mit einer Ausnahme ab, wenn die Schemavalidierung fehlschlägt (Ia400f)

Version 1.1.0-alpha03

9. Februar 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha03 ist veröffentlicht. Version 1.1.0-alpha03 enthält diese Commits.

API-Änderungen

  • Wir haben experimentelle Unterstützung für hierarchische Stilschemas hinzugefügt. Wir haben androidx.wear.watchface.style.UserStyleSetting.Option eine neue Property hinzugefügt: „childSettings“. Sie wird anfangs nur von ListOption verwendet. So kann eine Hierarchie von Stilen für die Verwendung durch Editor-Benutzeroberflächen beschrieben werden. Der zugrunde liegende UserStyle bleibt unverändert und ist weiterhin ein Map<String, ByteArray>. (Iaf6f4)
  • Wir haben WatchFace.OverlayStyle hinzugefügt, damit das Zifferblatt die Darstellung des Systemstatus-Overlays konfigurieren kann. (I8520d)
  • Wir haben clearWithBackgroundTintBeforeRenderingHighlightLayer eingeführt, einen neuen optionalen Konstruktorparameter für CanvasRenderer (Standardwert ist „false“). Wenn er auf „true“ gesetzt ist, wird der Canvas mit der Hintergrundfarbe gelöscht. (Ie01e5)
  • Der Metadatenschlüssel androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED wurde hinzugefügt. Damit können Datenquellen für Komplikationen angeben, dass sie einen Standardwert ohne Konfiguration bereitstellen können (Icc0d4).
  • Beim Bearbeiten eines Zifferblatts gibt es häufig sowohl eine interaktive als auch eine Headless-Instanz. Um Speicherplatz zu sparen, haben wir Renderer.SharedAssets eingeführt. Damit kann ein Zifferblatt-Renderer unveränderliche Daten (z. B. Texturen und Shader) zwischen Instanzen freigeben. GlesRenderer.setEglConfig und GlesRenderer.setEglDisplay sind veraltet. Es war nie vorgesehen, dass diese festgelegt werden können, und dies hätte zu undefiniertem Verhalten geführt. (I0d9e7)
  • Wir haben setNameResourceId und setScreenReaderNameResourceId (die auf String-Ressourcen verweisen) zu ComplicationSlot.Builder und entsprechende Getter in androidx.wear.watchface.client.ComplicationSlotState hinzugefügt. So kann das System die Namen von ComplicationSlots für die Verwendung in Editoren und Screenreadern abrufen. (If6c6a)
  • WatchfaceMetadataClient.getUserStyleSchema und getComplicationSlotMetadataMap geben jetzt WatchFaceException anstelle von RemoteException zurück. (I86f11)
  • onSynchronousComplicationRequest und zugehörige Funktionen in ComplicationDataSourceService wurden in onImmediateComplicationRequest usw. umbenannt. (I87ba0)
  • Zifferblatt-Editoren haben viel weniger Bildschirmfläche als Companion-Editoren. Daher ist es sinnvoll, unterschiedliche Symbole für Zifferblatt-Editoren zu unterstützen. Mit diesem Patch wird OnWatchEditorData (derzeit nur ein Symbol) zu allen UserStyleSettings und gegebenenfalls zu den zugehörigen Options-Klassen hinzugefügt. (If1886)
  • Wir haben dem Konstruktor von ListenableGlesRenderer @JvmOverloads hinzugefügt, um die Java-Interoperabilität zu verbessern. (I2974a)

Fehlerkorrekturen

  • Der Konstruktor von ListenableGlesRenderer ist jetzt korrekt als @Throws(GlesException::class) gekennzeichnet und die Klasse kann in Java erweitert werden. (Iac6d0)
  • Es wurde ein Fehler behoben, bei dem PhotoImageComplicationData tapAction nicht korrekt verarbeitet wurde (I1cc30).

Version 1.1.0-alpha02

12. Januar 2022

androidx.wear.watchface:watchface-*:1.1.0-alpha02 ist veröffentlicht. Version 1.1.0-alpha02 enthält diese Commits.

Neue Funktionen

  • Zur Unterstützung von Debugging und Tests haben ComplicationData und zugehörige abgeleitete Klassen jetzt überschriebene Methoden für „hashcode“, „equals“ und „toString“, was die Arbeit mit ihnen erleichtert.

API-Änderungen

  • WatchfaceMetadataClient-Methoden lösen bei Bedarf wieder RemoteExceptions aus, sodass Clientcode Fehler vom Zifferblatt leichter abfangen kann. (I78785)
  • ComplicationData und untergeordnete Klassen haben jetzt hashcode, equals und toString. (I24bc6)

Version 1.1.0-alpha01

15. Dezember 2021

androidx.wear.watchface:watchface-*:1.1.0-alpha01 ist veröffentlicht. Version 1.1.0-alpha01 enthält diese Commits.

Neue Funktionen

  • UserStyleSchema und ComplicationSlots können jetzt in XML definiert werden. Das vereinfacht die Erstellung von Zifferblättern. Außerdem sind WatchFaceMetadataClient-Abfragen schneller, da keine Bindung an den Dienst erforderlich ist, um die Metadaten abzurufen. Die WatchFaceMetadataClient und ListenableWatchFaceMetadataClient sind nicht mehr experimentell und werden Teil der stabilen API. Das System kann optional mehrere Instanzen eines Zifferblatts unterstützen, die jeweils unterschiedliche nutzerdefinierte Formatierungsoptionen haben. Sie sind in der Zifferblattauswahl zu sehen. Damit ein Zifferblatt diese Funktion nutzen kann, muss es das folgende Metadatentag in seinem Manifest enthalten.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • Einige Zifferblätter haben einen Status, der nicht in UserStyle erfasst wird. Um dies und mehrere Instanzen zu unterstützen, ist die Instanz-ID des Zifferblatts jetzt über WatchState.watchFaceInstanceId verfügbar.

  • ComplicationData wird jetzt im Cache gespeichert, damit Komplikationen sofort nach dem Laden angezeigt werden können. Manchmal wird ComplicationData vom System im Arbeitsspeicher zwischengespeichert und manchmal von den Zifferblattbibliotheken serialisiert. Beim Serialisieren geht jede zugehörige „tapAction“ verloren. In diesem Fall gibt ComplicationData.tapActionLostDueToSerialization den Wert true zurück und das Zifferblatt sollte die Komplikation anders darstellen (z. B. ausgegraut oder halbtransparent), um anzuzeigen, dass sie nicht angetippt werden kann. Das System sendet so schnell wie möglich aktualisierte ComplicationData mit einer tapAction.

  • Einige ComplicationData sollten nicht lange im Cache gespeichert werden. Dazu haben wir die allgemeinere Funktion ComplicationDataTimeline hinzugefügt. Damit kann eine Sequenz von zeitgesteuerten ComplicationData bereitgestellt werden, die auf dem Zifferblatt angezeigt werden können und automatisch aktualisiert werden. Das kann beispielsweise die Wettervorhersage für heute zu verschiedenen Zeiten oder mehrere anstehende Kalendertermine sein. ComplicationRequestListener wurde um die neue Methode onComplicationDataTimeline erweitert, mit der Sie diese Daten zurückgeben können.

  • DefaultComplicationDataSourcePolicy wurde erweitert, sodass Sie die ComplicationType für die primären und sekundären Datenquellen angeben können.

  • Wir haben Unterstützung für synchrone Anbieter von Zusatzfunktionen hinzugefügt. Dabei wird die Zusatzfunktion häufiger als normal aktualisiert, bis zu einmal pro Sekunde, wenn das Zifferblatt sichtbar und nicht im Ambient-Modus ist. Hinweis:Synchrone Anbieter von Komplikationen können aufgrund von Bedenken hinsichtlich des Speicherdrucks nur eingeschränkt verwendet werden.

  • Die Änderungen an PendingIntentTapListener werden wahrscheinlich rückgängig gemacht, da wir das zugrunde liegende Problem (das Zifferblatt kann nicht 5 Sekunden nach dem Drücken der Home-Schaltfläche Aktivitäten starten) im Framework behoben haben.

API-Änderungen

  • ComplicationData.isCached wurde in tapActionLostDueToSerialization geändert. Diese Eigenschaft ist nützlicher, um festzustellen, ob der Complication-Slot anders gerendert werden soll, um darauf hinzuweisen, dass er nicht angetippt werden kann. (I6de2f)
  • ComplicationDataTimeline wurde zu wear-complication-data-source hinzugefügt. Damit kann eine Sequenz von zeitgesteuerten ComplicationData bereitgestellt werden, die auf dem Zifferblatt angezeigt werden können und automatisch aktualisiert werden. Das kann beispielsweise die Wettervorhersage für heute zu verschiedenen Zeiten oder mehrere anstehende Kalendertermine sein. ComplicationRequestListener wurde um die neue Methode onComplicationDataTimeline erweitert, mit der Sie diese Daten zurückgeben können. Es gibt einen neuen Kotlin-Wrapper SuspendingTimelineComplicationDataSourceService zum Anhalten von Datenquellendiensten. (Idecdc)
  • PendingIntentTapListener und WatchFaceControlClient.getPendingIntentForTouchEvent wurden hinzugefügt. Dies kann bei Zifferblättern helfen, die als Reaktion auf Tippen Intents starten müssen, um ein Problem zu umgehen, bei dem das Framework das Starten neuer Aktivitäten für 5 Sekunden nach dem Drücken der Home-Schaltfläche blockiert. (I98074)
  • Es wurde ein ComplicationData-Cache pro Zifferblatt eingeführt. So kann das Zifferblatt beim Laden die letzten bekannten Datenwerte der Komplikation anzeigen, bis das System sie aktualisiert hat. Es gibt eine neue API-Methode WatchFaceControlClient.hasComplicationCache, die für OEMs vorgesehen ist. Dies kann sich auf die Strategie des Systems zum Senden von Zusatzfunktionen an ein Zifferblatt auswirken. Außerdem hat ComplicationData eine isCached-Property. Es wird empfohlen, zwischengespeicherte Komplikationen anders zu rendern, da tapAction nicht zwischengespeichert werden kann und in einer zwischengespeicherten Komplikation null ist. (I404b0)
  • Die Instanz-ID des Zifferblatts ist jetzt über WatchState.watchFaceInstanceId verfügbar. Die meisten Zifferblätter müssen dies nicht verwenden. Wenn es jedoch einen Status pro Zifferblatt gibt, der nicht im Schema gespeichert ist, ist dies der Schlüssel, mit dem die Zifferblattinstanz identifiziert wird. Um dies zu unterstützen, können Sie jetzt eine ID angeben, wenn Sie WatchFaceControlClient.createHeadlessWatchFaceClient aufrufen. (I1ff98)
  • Erweiterte DefaultComplicationDataSourcePolicy mit der Möglichkeit, die Standard-ComplicationTypes für den primären und sekundären Anbieter sowie für den Fallback-Systemanbieter festzulegen. ComplicationSlot.defaultDataSourceType wurde eingestellt. (If0ce3)
  • ComplicationSlot.configExtras ist jetzt veränderbar und kann vor dem Aufrufen von EditorSession.openComplicationDataSourceChooser() aktualisiert werden. (I6f852)
  • WatchFace.setComplicationDeniedDialogIntent und setComplicationRationaleDialogIntent wurden hinzugefügt. Diese Intents werden gestartet, um vor dem Anfordern von Berechtigungen für Komplikationen einen Dialog mit einer Begründung anzuzeigen. Außerdem wird ein weiterer Dialog angezeigt, in dem erklärt wird, dass Berechtigungen für Komplikationen erforderlich sind, wenn versucht wird, eine Komplikation zu bearbeiten, wenn Berechtigungen verweigert wurden. Die Anbieterauswahl kann dann nicht geöffnet werden, daher ist der Dialog erforderlich. (I3a29c)
  • UserStyleSchema und ComplicationSlots können jetzt in XML definiert werden. Das vereinfacht die Erstellung von Zifferblättern und beschleunigt WatchFaceMetadataClient-Anfragen, da keine Bindung an den Dienst erforderlich ist, um die Metadaten abzurufen. (I85bfa)
  • InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent wurde hinzugefügt, damit ein Client feststellen kann, ob ein Zifferblatt getPendingIntentForTouchEvent unterstützt. (I0b917)
  • WatchFaceMetadataClient und ListenableWatchFaceMetadataClient sind nicht mehr experimentell. Sie können verwendet werden, um effizient Metadaten für Zifferblätter abzurufen, sofern dies möglich ist, ohne einen Binder für das Zifferblatt zu öffnen. (Ibb827)
  • Unterstützung für synchrone Anbieter von Zusatzfunktionen hinzugefügt, bei denen die Zusatzfunktion häufiger als normal aktualisiert wird, bis zu einmal pro Sekunde, wenn das Zifferblatt sichtbar und nicht im Ambient-Modus ist. Dazu muss der Anbieter in seinem Manifest ein neues androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS-Metadatentag einfügen und onSynchronousComplicationRequest überschreiben. Je nach Art der Datenquelle müssen möglicherweise auch onStartSynchronousComplicationRequests und onStopInteractiveComplicationRequests überschrieben werden, um Benachrichtigungen zu erhalten, wenn die Komplikation in den interaktiven Modus wechselt und ihn verlässt. (I8fe9d)

Version 1.0

Version 1.0.1

9. Februar 2022

androidx.wear.watchface:watchface-*:1.0.1 ist veröffentlicht. Version 1.0.1 enthält diese Commits.

Fehlerkorrekturen

  • Es wurde ein Fehler behoben, bei dem PhotoImageComplicationData tapAction nicht korrekt verarbeitet wurde (I1cc30).

Version 1.0.0

1. Dezember 2021

androidx.wear.watchface:watchface-*:1.0.0 ist veröffentlicht. Version 1.0.0 enthält diese Commits.

Wichtige Funktionen von Version 1.0.0

Das androidx.wear.watchface-Paket ist die neue empfohlene Bibliothek für die Entwicklung von WearOS-Zifferblättern. Sie bietet eine Reihe neuer Funktionen im Vergleich zur alten Wearable Support Library.

  • Die Bibliothek unterstützt direkt die Gestaltung durch Nutzer (z. B. zum Ändern der Farbpalette, des Stils der Zeiger oder des Aussehens der Stundenmarkierungen) (siehe androidx.wear.watchface.style). Es ist jetzt viel einfacher, einen Editor für das Zifferblatt mit androidx.wear.watchface.editor zu entwickeln. Das Zifferblatt kann über die Companion-App des Systems bearbeitet werden, ohne dass Sie zusätzlichen Code schreiben müssen.
  • Integrierte Best Practices Die Bibliothek hat automatisch Labels für die Sprachausgabe für Komplikationen generiert. Sie können auch eigene hinzufügen. Die Framerate wird automatisch reduziert, wenn der Akku schwach ist und nicht geladen wird, um die Akkulaufzeit zu verlängern.
  • Für die Entwicklung eines Zifferblatts ist weniger Code erforderlich, insbesondere für Komplikationen, bei denen ein Großteil des Standardcodes in die Bibliothek verschoben wurde.

Fehlerkorrekturen

  • Fehler bei EditorSession.userStyle.compareAndSet beheben (I6f676)
  • Sehr kurze Verzögerungen bei Zifferblättern beheben (Iffb97)
  • InteractiveWatchFaceImpl.onDestroy im UI-Thread ausführen (I83340)
  • Mehrere Probleme mit Broadcast-Empfängern behoben (I7d25f)

Version 1.0.0-rc01

3. November 2021

androidx.wear.watchface:watchface-*:1.0.0-rc01 ist veröffentlicht. Version 1.0.0-rc01 enthält diese Commits.

Fehlerkorrekturen

  • Fehler in dump() (aufgerufen von „adb shell dumpsys“) beheben, der durch Flow-Migrationen verursacht wurde. (087cf9e)

  • Achten Sie auf die richtige Reihenfolge von „writeDirectBootPrefs“. Wir möchten, dass „writeDirectBootPrefs“ immer nach „initStyleAndComplications“ ausgeführt wird, da sonst die Initialisierung des UI-Threads verzögert werden könnte.(37650ac)

  • Achten Sie darauf, dass Renderer.onDestroy aufgerufen wird. Wenn der Renderer erstellt wurde, die WF-Initialisierung aber nicht abgeschlossen ist und Engine.onDestroy aufgerufen wird, müssen wir Renderer.onDestroy aufrufen. (f9952dc)

  • Optimierung/Korrektur für isBatteryLowAndNotCharging. Durch diesen Patch wird die anfängliche Einrichtung von „isBatteryLowAndNotCharging“ früher ausgeführt, sodass sie parallel zu „createWatchFace“ erfolgen kann. Außerdem wird jetzt auf ACTION_POWER_DISCONNECTED reagiert. (ddffd80

  • InteractiveWatchFaceClientImpl.isConnectionAlive muss nach dem Schließen „false“ sein (ab9774e)

Version 1.0.0-beta01

27. Oktober 2021

androidx.wear.watchface:watchface-*:1.0.0-beta01 ist veröffentlicht. Version 1.0.0-beta01 enthält diese Commits.

Version 1.0.0-alpha24

13. Oktober 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha24 ist veröffentlicht. Version 1.0.0-alpha24 enthält diese Commits.

API-Änderungen

  • Klassen im Paket androidx.wear.watchface.complications wurden in ein neues wear:watchface:watchface-complications-Projekt verschoben. Das bedeutet, dass Sie diese Bibliothek und alle vorherigen Alphaversionen von wear:watchface:watchface-complications-data nicht einbinden können, da sonst Fehler wegen doppelter Klassen auftreten. (I97195)
  • Renderer.dump wurde in Renderer.onDump umbenannt und mit @UiThread annotiert. (I44845)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener wurde in addOnWatchFaceReadyListener und removeWatchFaceReadyListener in removeOnWatchFaceReadyListener umbenannt. (I48fea)
  • EditorSession getComplicationsPreviewData und getComplicationsDataSourceInfo sind keine suspend-Funktionen mehr, sondern StateFlow<>-Properties, deren Wert anfangs null ist. In ListenableEditorSession wurden getListenableComplicationPreviewData und getListenableComplicationsProviderInfo zugunsten der neuen StateFlow<>-Objekte aus der Basisklasse entfernt. Wenn Sie auf Änderungen im Java-Code reagieren müssen, sollten Sie androidx.lifecycle.FlowLiveDataConversions.asLiveData verwenden, um zu LiveData<> zu konvertieren. (Ic5483)

Version 1.0.0-alpha23

29. September 2021

androidx.wear.watchface:watchface-*:1.0.0-alpha23 ist veröffentlicht. Version 1.0.0-alpha23 enthält diese Commits.

Neue Funktionen

Die Zifferblattbibliothek ist jetzt eine einzelne Bibliotheksgruppe. Daher wurden die Bibliotheken verschoben und Sie müssen Ihre Gradle-Importe wie folgt aktualisieren:

Alt Neu
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

API-Änderungen

  • Migrieren Sie die separaten Bibliotheken androidx.wear für Zifferblätter und Komplikationen in die Bibliotheksgruppe androidx.wear.watchface. (b25f3c0)
  • „EditorRequest.canWatchFaceSupportHeadlessEditing“ wurde hinzugefügt, damit ein Client erkennen kann, ob ein Zifferblatt-Editor die Headless-Bearbeitung unterstützt. Es wird einige falsch negative Ergebnisse geben, da die Unterstützung in asop/1756809 hinzugefügt wurde. Für alle zukünftigen Zifferblätter wird jedoch der richtige Wert zurückgegeben. (ca55590)
  • Renderer hat jetzt eine dump()-Methode, die überschrieben werden kann, um den Informationen, die von ABD-Shell-Dumpsys-Aktivitätsdienst WatchFaceService generiert werden, benutzerdefinierte Daten hinzuzufügen. (95235f9)
  • Bei InteractiveWatchFaceClient.addWatchFaceReadyListener wird jetzt zuerst der Executor angegeben. (563ac2f)
  • StateFlowCompatHelper wurde entfernt. Verwenden Sie stattdessen asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
  • CurrentUserStyleRepository.userStyle kann nicht mehr geändert werden. (I44889)
  • „WatchFaceReadyListener“ wurde in „OnWatchFaceReadyListener“ umbenannt. (Ic12a9)

Fehlerkorrekturen

  • InteractiveInstanceManager.deleteInstance aufrufen, um onDestroy aufzurufen. Dies ist erforderlich, damit InteractiveWatchFaceImpl per Garbage Collection entfernt wird.(fce4af8, b/199485839)