Tarcza zegarka

Twórz aplikacje na zegarki z Wear OS by Google.

Uwaga: od 10 lipca 2024 r. tarcze zegarka muszą używać formatu tarczy zegarka, aby można było je instalować na nowych zegarkach z zainstalowaną fabrycznie systemem Wear OS 5. Więcej informacji o zmianach widocznych dla użytkowników znajdziesz w tym artykule w Centrum pomocy.

Dodatkowo od początku 2025 r. (konkretna data zostanie ogłoszona w IV kwartale 2024 r.) wszystkie nowe tarcze zegarków publikowane w Google Play będą musiały używać formatu tarczy zegarka.

Najnowsza aktualizacja Wersja stabilna Kandydat do wydania Wersja Beta Wydanie alfa
17 kwietnia 2024 r. 1.2.1 - - 1.3.0-alfa03

Deklarowanie zależności

Aby dodać zależność w Wear, musisz dodać do projektu repozytorium Google Maven. Więcej informacji znajdziesz w repozytorium Google Maven.

W pliku build.gradle aplikacji lub modułu dodaj zależności artefaktów, których potrzebujesz:

Odlotowy

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"
}

Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.

Opinia

Twoja opinia pomoże nam ulepszyć Jetpack. Daj nam znać, jeśli odkryjesz nowe wydania lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nową bibliotekę, przejrzyj istniejące problemy w tej bibliotece. Możesz oddać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego numeru

Więcej informacji znajdziesz w dokumentacji narzędzia do śledzenia problemów.

Wersja 1.3

Wersja 1.3.0-alfa03

17 kwietnia 2024 r.

Usługa androidx.wear.watchface:watchface-*:1.3.0-alpha03 została zwolniona. Wersja 1.3.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodano element EditorSession#setOverrideComplications, który podczas edytowania tymczasowo ustawia ComplicationData instancji tarczy zegarka. Jeśli widżety zmieniają się rzadko, jest to lepsze rozwiązanie niż przekazywanie zastąpień przez EditorSession#renderWatchFaceToBitmap. (I19384).

Poprawki błędów

  • Wcześniej funkcja selectComplicationDataForInstant wywoływała funkcję toApiComplicationData w przypadku dowolnych osi czasu, co oznacza, że kolejny test równości referencyjnej === zawsze kończył się niepowodzeniem. Oznaczało to, że widżety były odświeżane w każdej ramce, co doprowadzało do wyczerpania baterii. (717406).

Wersja 1.3.0-alfa02

3 kwietnia 2024 r.

Usługa androidx.wear.watchface:watchface-*:1.3.0-alpha02 została zwolniona. Wersja 1.3.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Używamy teraz równości odwołań do porównania najlepszych i selectedData, ponieważ operator „równa się” jest drogi. (446b00)

Zmiany interfejsu API

  • Dodaliśmy do GoalProgressComplicationData dynamiczny interfejs API, który nie działa w trybie awaryjnym. (C33264)

Wersja 1.3.0-alpha01

7 lutego 2024 r.

Usługa androidx.wear.watchface:watchface-*:1.3.0-alpha01 została zwolniona. Wersja 1.3.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Obiekt WatchFaceServices może być inicjowany jednocześnie, dlatego powinien być bezstanowy. W związku z tym dodaliśmy w tym celu funkcję StatefulWatchFaceService, w której dodatkowy element utworzony przez użytkownika utworzony przez createExtra() jest przekazywany do wszystkich zastąpień wywoływanych podczas inicjowania.
  • W GlesRenderer2 jest teraz przeciążenie konstruktora, dzięki czemu możesz określić listę atrybutów do wypróbowania z eglChooseConfig.

Zmiany interfejsu API

  • StatefulWatchFaceService obsługuje teraz zastąpienie parametru getComplicationSlotInflationFactory, do którego jest przekazywany zdefiniowany przez użytkownika dodatek utworzony przez użytkownika createExtra(). (I82d9f)
  • Niektóre tarcze zegarka muszą udostępniać dane pomocnicze utworzone w createUserStyleSchema innym metodom inicjowania. Ponieważ nie było lepszej alternatywy, deweloperzy zwykle ustawiali wersję WatchFaceServices jako stanową. Jest to niebezpieczne, ponieważ jednocześnie można utworzyć wiele instancji, co może prowadzić do błędów. Aby rozwiązać ten problem, wprowadziliśmy metody StatefulWatchFaceService i StatefulWatchFaceRuntimeService, w których typ zdefiniowany przez użytkownika jest tworzony przez funkcję createExtra() i przekazywany do różnych metod tworzenia jako parametr. (If8a99).
  • Do pakietu InteractiveWatchFaceClient dodaliśmy funkcję getUserStyleFlavors, która jest interesująca głównie dla producentów OEM. (I0f5d8)
  • W GlesRenderer2 jest teraz przeciążenie konstruktora, dzięki czemu możesz określić listę atrybutów do wypróbowania z eglChooseConfig. Dzięki temu na przykład możesz najpierw wypróbować konfigurację z antyaliasingiem i w razie potrzeby przełączyć się na inną. (I1Ba74)
  • Na Androidzie U obsługa SystemDataSources.DATA_SOURCE_HEART_RATE zostanie dodana do Wear OS. Ten widżet z pewnością będzie obsługiwać tylko widżety SHORT_TEXT, ale zalecamy, aby ComplicationSlot akceptował również SMALL_IMAGE, ponieważ OEM może zdecydować się na wyświetlanie skrótu do aplikacji do dbania o zdrowie zamiast wartości aktywnej. (I34223)
  • Dodano funkcję METADATA_KEY_CONFIG_RESTORE_SUPPORTED, która od Androida U określa, co się stanie po przywróceniu systemu z kopii zapasowej źródła danych widżetu za pomocą METADATA_KEY_DATA_SOURCE_CONFIG_ACTION. Domyślnie system zakłada, że usługa źródła danych widżetu obsługuje tworzenie kopii zapasowych dowolnych danych konfiguracyjnych. Jeśli jednak tak nie jest, może dodać ustawienie metadanych METADATA_KEY_DATA_SOURCE_CONFIG_ACTION na Fałsz, co spowoduje oznaczenie miejsca widżetu jako nieskonfigurowanego. (I6c505)

Wersja 1.2

Wersja 1.2.1

24 stycznia 2024 r.

Usługa androidx.wear.watchface:watchface-*:1.2.1 została zwolniona. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono awarię na zegarku Samsung Galaxy Watch 4, 5 i 6. (43f0b0)

Wersja 1.2.0

29 listopada 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0 została zwolniona. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Dodaliśmy obsługę nowych typów widżetów, które są dostępne na Androidzie T:
    • GoalProgressComplicationData, który jest podobny do RangedValueComplicationData, ale służy do realizacji celu, w którym minimalna wartość minimalna domyślnie wynosi 0, a wartość może być większa niż targetValue.
    • WeightedElementsComplicationData, który składa się z tablicy Elementów (pary wagi i koloru) oraz opcjonalnego tekstu, tytułu i zdjęcia. Można je wyświetlać w postaci wykresu kołowego, w którym kolory muszą mieć znaczenie w kontekście, ponieważ zazwyczaj nie ma już miejsca na dodawanie etykiet.
  • Do usługi RangedValueComplicationData dodaliśmy obsługę opcjonalnej ColorRanges. Normalnie widżety są renderowane w kolorach wybranej tarczy zegarka, ale czasami ComplicationDataSource najlepiej jest umieścić je, aby ustawić kolory, np. gdy mają one określone znaczenie semantyczne. Przykład: zmiana koloru z czerwonego na niebieski.
  • Prawie każdy typ ComplicationData obsługuje teraz SmallImages.
  • Dodaliśmy ComplicationDisplayPolicy, gdzie DO_NOT_SHOW_WHEN_DEVICE_LOCKED informuje zgodną tarczę zegarka, by nie wyświetlała widżetu, gdy urządzenie jest zablokowane.
  • Od Androida T dostawcy OEM będą mogli do ComplicationRequest#isForSafeWatchFace określić, czy żądanie widżetu pochodzi z tarczy zegarka wymienionej na liście zdefiniowanej przez metadane android.support.wearable.complications.SAFE_WATCH_FACES w pliku manifestu dostawcy. Dostawca musi mieć uprawnienie com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE, aby otrzymywać informacje inne niż TargetWatchFaceSafety.UNKNOWN.
  • Funkcja UserStyleFlavors jest obecnie funkcją nieeksperymentalną.

Wersja 1.2.0-rc01

18 października 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-rc01 została zwolniona. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Wersja 1.2.0-beta02

6 września 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-beta02 została zwolniona. Wersja 1.2.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • To miejsce (SuspendingComplicationDataSourceService#onDestroy) jest teraz otwarte. Uwaga: wycofaliśmy obsługę domyślnego widżetu pogodowego w systemie.

Zmiany interfejsu API

  • Przywróć opcję „Udostępnij nowe źródło danych dla widżetów pogodowych”. (I6f335)

Wersja 1.2.0-beta01

23 sierpnia 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-beta01 została zwolniona. Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

  • Od Androida T Wear OS będzie obsługiwać domyślny widżet systemu pogodowego.

Zmiany interfejsu API

  • Dodaj opcję zastępczą domyślnego systemu pogody na potrzeby widżetów. (IA0994).
  • Ta poprawka dodaje WatchFaceRuntimeService i WatchFaceControlClient.createWatchFaceRuntimeControlClient oraz owijki gujawy. Dodają one obsługę środowisk wykonawczych tarczy zegarka, które są specjalnym rodzajem tarczy, która wczytuje jej definicję z innego pakietu. Obecnie Wear OS obsługuje tylko środowisko wykonawcze dla Formatu tarczy zegarka Android. (I2799f)
  • Ta poprawka jest kontynuacją do aosp/2636578, gdzie zmieniamy nazwy int defs, więc nie trzeba zmieniać kodu w zależności od wartości WatchFaceType, CanvasType, TapType lub ComplicationsSlotBoundsType. (I4098B)
  • Zaktualizowaliśmy pliki interfejsu API, aby dodać adnotacje o pomijaniu zgodności. (I8e87a, b/287516207)
  • Ta poprawka ujawnia stałe WatchFaceType w WatchFaceTypes, stałe CanvasType w CanvasTypes, stałe TapType w TapTypes i ComplicationsSlotBoundsType w ComplicationsSlotBoundsType. (I3b85a, b/288750666)
  • Funkcja WatchFace.OverlayStyle jest bardzo rzadko używana i nie jest dobrze obsługiwana przez OEM, dlatego ją wycofujemy z zamiarem usunięcia w późniejszym czasie. (I7344a)

Wersja 1.2.0-alpha09

21 czerwca 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha09 została zwolniona. Wersja 1.2.0-alfa09 zawiera te zatwierdzenia.

Nowe funkcje

  • RangedValueComplicationData.Builder akceptuje teraz DynamicFloat, a nowa klasa DynamicComplicationText jest dostępna jako podklasa klasy ComplicationText. Oba te elementy mogą wykorzystywać wyrażenia dynamiczne oraz powiązania platformy aktualizowane z częstotliwością 1 Hz na obsługiwanych urządzeniach z Wear 4.

Zmiany interfejsu API

  • Dodano dynamiczne typy danych dotyczących dziennego dystansu, dziennych kalorii i dziennej liczby pięter. Klucze do źródeł informacji o stanie platformy są teraz dostępne w domenie PlatformHealthSources.Keys (Ib7637)
  • Zastosuj funkcję PlatformDataProvider, aby widzieć tętno i dzienną liczbę kroków. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)
  • Zmień nazwę StateEntryValue na DynamicDataValue i zaktualizuj interfejsy API stanu do DynamicDataKey. (If1c01).
  • Dodaj AppDataKey w przypadku dostępu do stanu przekazanego aplikacji; dodaj PlatformDataKey w celu uzyskiwania dostępu do danych platformy; dodaj obsługę przestrzeni nazw w StateStore. (I7985e)
  • enable/disablePlatformSource metod zostało usuniętych z DynamicTypeEvaluator. Rozmówca powinien być odpowiedzialny za aktualizacje. (I78c6D)
  • Zezwalaj na ograniczanie rozmiaru powiązanych typów danych. (IE2966).

Wersja 1.2.0-alpha08

19 kwietnia 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha08 została zwolniona. Wersja 1.2.0-alfa08 zawiera te zatwierdzenia.

Nowe funkcje

  • Od Androida T dostawcy widżetów z uprawnieniami com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE mogą rejestrować metadane androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, które zastępują android.support.wearable.complications.SUPPORTED_TYPES w przypadku bezpiecznych tarcz zegarka. Oznacza to, że dostawca widżetów może wyświetlać różne rodzaje zaufanych i niezaufanych tarcz zegarka.

Zmiany interfejsu API

  • Propagacja klasy @Deprecated do usługi (I882d1, b/271441831)
  • Zmieniono nazwę parametru wartości dla: Enum.valueOf (Ia9b89)
  • Więcej zgłoszonych wyjątków od wartości enum (I818fe)
  • Usunęliśmy renderWatchFaceToSurface na rzecz createRemoteWatchFaceView, który jest oparty na SurfaceControlViewHost i umożliwia wywołującemu osadzenie widoku z tarczy zegarka, który jest renderowany, gdy klient wywołuje RemoteWatchFaceViewHost#renderWatchFace. (IB311d)
  • Dodaliśmy renderWatchFaceToSurface do aplikacji InteractiveWatchFaceClient, HeadlessWatchFaceClient i EditorSession. Ta metoda jest zwykle wydajniejsza niż renderowanie na bitmapie. (Ieacad).
  • Nazwa ObservableStateStore została zmieniona na StateStore. (Ieb0e2).
  • Zamiast argumentów konstruktora dodano DynamicTypeEvaluator.Builder, aby umożliwić użycie większej liczby opcjonalnych argumentów, w tym argument ObservableStateStore, który teraz domyślnie ustawia pusty magazyn. (I6f832)
  • Zrefaktoryzowana kolejność parametrów w polu DynamicTypeEvaluator. (IC1ba4).
  • Wykonawca został dodany do metod DynamicTypeEvaluator.bind. (I346ab)
  • Do obiektu BoundDynamicType dodaliśmy metodę startEvaluation, która aktywuje ocenę po powiązaniu typu dynamicznego. (I19908).
  • Dostawcy widżetów z uprawnieniami com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE mogą zarejestrować metadane androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, które zastąpią android.support.wearable.complications.SUPPORTED_TYPES w przypadku bezpiecznych tarcz zegarka. (Id1c73).
  • Zmieniliśmy nazwę z CustomValueUserStyleSettings2 na LargeCustomValueUserStyleSettings. (IC17ac).

Poprawki błędów

  • DynamicTypeValueReceiver#onPreUpdate został(a) usunięty(a). (I2dc35)

Wersja 1.2.0-alpha07

22 lutego 2023 roku

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha07 została zwolniona. Wersja 1.2.0-alfa07 zawiera te zatwierdzenia.

Nowe funkcje

  • Od Androida T dostawcy OEM będą mogli do ComplicationRequest#isForSafeWatchFace określić, czy żądanie widżetu pochodzi z tarczy zegarka wymienionej na liście zdefiniowanej przez metadane android.support.wearable.complications.SAFE_WATCH_FACES w pliku manifestu dostawcy. Aby otrzymywać informacje inne niż TargetWatchFaceSafety.UNKNOWN, dostawca musi mieć uprawnienie com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.

  • Możesz też używać Androida T CustomValueUserStyleSetting2 o rozmiarze do 12,5 KB. Poprzedni limit dla pliku CustomValueUserStyleSetting wynosił 1 KB. Pomimo zwiększonych limitów rozmiaru zalecamy programistom, by używali niewielkich ilości danych, ponieważ podczas edytowania ustawienia są przesyłane przez Bluetooth, a przepustowość Bluetootha jest ograniczona.

Zmiany interfejsu API

  • Do obiektów GlesRenderer i GlesRenderer2 dodaliśmy opcjonalny parametr eglContextAttribList, który umożliwia ustawienie wartości EGL14.EGL_CONTEXT_CLIENT_VERSION przekazywanej do EGL14.eglCreateContext. (I2a83e)
  • Przenieśliśmy biblioteki tarcz zegarka do androidx.core.util.Consumer zamiast java.util.function.Consumer. (I273f5)
  • Więcej zgłoszonych wyjątków od metody dostępu właściwości KT (Iff9d9)
  • Dodaliśmy InteractiveWatchFaceClient.isComplicationDisplayPolicySupported, aby klient mógł określić, czy musi emulować obsługę w imieniu starych tarcz zegarka. (I24c89)
  • Zdecydowaliśmy, że pole isForSafeWatchFace powinno być elementem IntDef trójstanowym. (Ief2f7).
  • W przypadku Androida T wprowadziliśmy pakiet ComplicationRequest.isForSafeWatchFace, który jest przeznaczony do użytku OEM i wymaga com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. W przypadku źródeł danych w obrazie systemu wartość ta zwraca wartość „prawda”, jeśli tarcza zegarka, która wysłała żądanie, jest na liście bezpiecznych tarcz wskazanej przez źródło danych w pliku manifestu. (I0cbb6)
  • Na Androida T dodaliśmy pakiet CustomValueUserStyleSetting2 o rozmiarze do 12,5 KB. Poprzedni limit dla pliku CustomValueUserStyleSetting wynosił 1 KB. (I0B100)

Wersja 1.2.0-alpha06

25 stycznia 2023 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha06 została zwolniona. Wersja 1.2.0-alfa06 zawiera te zatwierdzenia.

Nowe funkcje

  • Pracujemy nad dodaniem obsługi powiązań platform do komplikacji. Ta funkcja nie jest jeszcze gotowa do użycia, ale wkrótce zostanie dodana.
  • Dodaliśmy obsługę XML ComplicationSlot dla nowych typów widżetów: GOAL_PROGRESS i WEIGHTED_ELEMENTS.

Poprawki błędów

  • Naprawia wyciek, w wyniku którego edytor tarczy zegarka nie był prawidłowo uruchamiany na urządzeniach Samsung. (3B5987).
  • Naprawia błąd, który powodował, że widżety nie wyświetlały się prawidłowo przy przełączaniu się między tarczą zegarka z wieloma ulubionymi. (B38ECE)
  • Naprawia błąd serializacji z parametrem perOptionScreenReaderNames, który powodował awarię tarczy zegarka. (E9f466)

Wersja 1.2.0-alpha05

7 grudnia 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha05 została zwolniona. Wersja 1.2.0-alfa05 zawiera te zatwierdzenia.

Nowe funkcje

  • Jakiś czas temu dodaliśmy obsługę hierarchicznej klasy UserStyleSettings, a w Androidzie T można mieć więcej niż 1 element ComplicationSlotsUserStyleSetting w hierarchii. W zależności od stylu wybranego przez użytkownika aktywna będzie tylko 1 funkcja ComplicationSlotsUserStyleSetting.

  • Zwiększamy obsługę czytników ekranu w językach ListOption i ComplicationSlotsOption, dodając pole screenReaderName. Pamiętaj, że przed Androidem T to pole będzie ignorowane przez edytorów towarzyszących.

Zmiany interfejsu API

  • Do pól ListOption i ComplicationSlotsOption dodaliśmy nowe opcjonalne pole screenReaderName, które będzie dostępne dla edytorów. Będzie ono ignorowane przez edytorów towarzyszących na urządzeniach przed Androidem T. (I75326)
  • Od Androida T wiele elementów typu ComplicationSlotsUserStyleSettings jest teraz obsługiwanych w hierarchii stylów, ale tylko jeden z nich może być aktywny w danym momencie. Do elementu UserStyleSchema dodaliśmy funkcję narzędziową findComplicationSlotsOptionForUserStyle, aby ułatwić znalezienie aktywnego obiektu ComplicationSlotsOption, jeśli taki istnieje. (IC2b06)
  • Obiekt RangedValuesTypes został przeniesiony do obiektu towarzyszącego użytkownika RangedValueComplicationData i zmienił nazwę na TYPE_UNDEFINED, TYPE_RATING oraz dodano nowy obiekt TYPE_PERCENTAGE. (I55d02)
  • Zmieniliśmy nazwę eksperymentu DynamicFloat na FloatExpression i oznaczyliśmy go jako @hide. (Idf4f1)
  • Dodawanie adnotacji @JvmDefaultWithCompatibility (I8f206)

Wersja 1.2.0-alfa04

9 listopada 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha04 została zwolniona. Wersja 1.2.0-alfa04 zawiera te zatwierdzenia.

Nowe funkcje

  • W Androidzie T dodaliśmy obsługę 2 nowych typów widżetów: GoalProgressComplicationData i WeightedElementsComplicationData.
  • Metoda GoalProgressComplicationData jest podobna do RangedValueComplicationData, ale jej wartość może przekraczać wartość docelową (w przypadku RangedValueComplicationData wartość jest ograniczona do zakresu [min.. maks.]), co ma wpływ na wygląd strony, ponieważ może nie pasować do wszystkich tarcz zegarka.
  • Funkcja GoalProgressComplicationData obsługuje wykresy kołowe i podobne zestawienia prostych danych.
  • Dodaliśmy do usługi RangedValueComplicationData opcjonalną pomoc dotyczącą kategorii ColorRamps.
  • W przypadku Androida T dodaliśmy do pakietu ComplicationData funkcje ComplicationPersistencePolicy i setCachePolicy, które obecnie pozwalają dostawcy określić, czy widżet ma być utrwalony (tzn. czy jest zapisany w pamięci podręcznej po ponownym uruchomieniu). Większość powikłań nie wymaga ustawienia kontroli pamięci podręcznej, ale dzięki temu można rozwiązać problemy z nieaktualnymi danymi w przypadku niektórych komplikacji, które często się aktualizują (np. komplikacji dotyczących danych zdrowotnych). Dodaliśmy też ComplicationDisplayPolicy, gdy DO_NOT_SHOW_WHEN_DEVICE_LOCKED informuje zgodną tarczę zegarka, by nie wyświetlała widżetu, gdy urządzenie jest zablokowane. (IC9574)

Zmiany interfejsu API

  • GoalProgressComplicationData, WeightedElementsComplicationData i ColorRamp nie są już w fazie eksperymentalnej. (Ica9e2).
  • Interfejsy ComplicationPersistencePolicy i ComplicationDisplayPolicy są teraz prawidłowo oznaczone jako interfejsy API typu T. (I31d88)
  • Wycofany konstruktor ComplicationSlotOverlay ma teraz konstrukcję DeprecationLevel.WARNING, która umożliwia ponowne wywołanie go z poziomu Javy. (IB308C)
  • Rozwiązaliśmy problemy ze zgodnością z pakietem ComplicationRequestListener, CanvasComplication, ComplicationTapFilter i InteractiveWatchFaceClient, dodając do nich adnotacje @JvmDefaultWithCompatibility (Id94fc).
  • Usunęliśmy eksperymentalne ProtoLayoutComplicationData i ListComplicationData. Historia dewelopera była jasna, więc mamy nadzieję, że wrócimy do niej w przyszłości. (I9df05)
  • Wróćmy do aplikacji RangedValueComplicationData: ValueType. WeightedElementsComplicationData obsługuje teraz kolor tła. Usunęliśmy usługę DiscreteRangedValueComplicationData, ponieważ jest ona podzbiorem funkcji WeightedElementsComplicationData. (I6446C)

Poprawki błędów

  • W kodzie równości i skrótu umieść isForScreenShot. Sprawdź, czy onRenderParametersChanged otrzymuje prawidłową wartość isForScreenshot (I04a41).
  • Usunięto wyciek danych WatchFaceControlService z klientów bez interfejsu graficznego. (E90E00)

Wersja 1.2.0-alfa03

5 października 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha03 została zwolniona. Wersja 1.2.0-alfa03 zawiera te zatwierdzenia.

Nowe funkcje

  • Nie wprowadziliśmy żadnych nowych funkcji, ale naprawiliśmy kilka błędów w edytorze tarcz zegarka.

Zmiany interfejsu API

  • Wycofano UserStyleSchema.userStyleSettings, ponieważ rootUserStyleSettings nie jest już eksperymentem (Ie96e3)
  • Przenieś rootUserStyleSettings z eksperymentu (I8d6b3)
  • Oznaczyliśmy aplikację WatchFaceColors jako eksperymentalną, ponieważ nie jest obsługiwana przez wszystkie systemy (I6d75d)
  • Udostępnij DisconnectReasons w publicznym interfejsie API, aby działał z nim IntDef. (I791f8)

Poprawki błędów

  • Jeśli SysUI umrze, zamknij wszystkie otwarte edytory zegarka. Jeśli SysUI umrze, a edytor tarczy zegarka się nie zamknie, tarcza może pozostać w niespójnym stanie, ponieważ do zachowania wszelkich zmian stylu użytkownika system polega na funkcji SysUI.(ba762a
  • Napraw wyciek pamięci w ComplicationDataSourceInfoRetriever, w którym kontynuacja zgodności kotlinu działała jako poziom główny Gc i zachowywała aktywność edytora.(33ee06)

Wersja 1.2.0-alfa02

21 września 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha02 została zwolniona. Wersja 1.2.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Niektóre tarcze zegarka mają konfigurację inną niż UserStyle, która wpływa na nią wizualnie (np. wybiera zdjęcie w tle). Dodaliśmy Renderer.sendPreviewImageNeedsUpdateRequest, który umożliwia tarczę zegarka wysyłanie próśb o aktualizację obrazu podglądu. Pamiętaj, że do działania tej funkcji jest wymagany odpowiedni aktualny system.

  • Dodaliśmy również interfejs API dla tarcz zegarka, dzięki któremu system może określić ich kolory na podstawie ich palety. Uwaga: ta funkcja została wprowadzona w wersji eksperymentalnej – po wprowadzeniu poprawki.

  • Prawie każdy typ ComplicationData obsługuje teraz SmallImages.

Zmiany interfejsu API

  • Menedżer tapet może czasami zostać odłączony od wyszukiwarki i utworzony w inny. Dodaliśmy DisconnectReasonint def i rozszerzony ClientDisconnectListenerz nową metodą, która obejmuje DisconnectReason, pozwalając detektorowi obserwować odłączanie silnika. (45cce)
  • Dodano 2 opcjonalne parametry nameResourceId i screenReaderResourceId do konstruktora ComplicationSlotOverlay (I157e8).
  • W przypadku nowego obciążenia typu getOrCreateInteractiveWatchFaceClient dodaliśmy opakowanie gujawy z elementem PreviewImageUpdateRequestedListener. (Ic31f0).
  • Dodaliśmy Renderer.sendPreviewImageNeedsUpdateRequest, który jest przydatny w przypadku tarcz zegarka w innym stanie niż UserStyleSchema, co wpływa na ich wygląd (np. tarcz z obrazem tła, który można wybrać). Po stronie klienta dodaliśmy do getOrCreateInteractiveWatchFaceClient jako opcjonalny parametr PreviewImageUpdateRequestedListener, który pozwala obserwować te żądania. (Iff44a).
  • Uprościliśmy interfejs API do ujawniania funkcji WatchFaceColors. Teraz w mechanizmie renderowania dostępna jest prosta właściwość o nazwie watchFaceColors, którą można ustawić na tarczy zegarka. W razie potrzeby należy ją aktualizować w odpowiedzi na wszelkie zmiany stylu. Zamiast używać WallpaperManager do obserwowania zmian kolorów, dodaliśmy OnWatchFaceColorsListener do InteractiveWatchFaceClient. (I490bc)
  • Dodaliśmy klasę WatchFaceColors, która zawiera 3 najbardziej widoczne kolory tarczy zegarka, oraz dodaliśmy do mechanizmu renderowania watchfaceColors i notifyWatchFaceColorsChanged metody otwarte. Dzięki nim system może uzyskiwać kolory tarczy zegarka za pomocą WallpaperManager.getWallpaperColors. (I3d611)
  • ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData (oraz eksperymentalne DiscreteRangedValueComplicationData, GoalProgressComplicationData i WeightedElementsComplicationData) obsługują teraz SmallImages. Jeśli tarcza zegarka zdecyduje się wyrenderować widżet w wielu kolorach, ma teraz możliwość użycia wielokolorowego elementu SmallImage, tam gdzie wcześniej trzeba było używać obrazu monochromatycznego. (I257df)
  • Refaktoryzacja PreviewImageUpdateRequestedListener na Consumer<> (Ia875d)
  • Zastąp niestandardowy typ pojedynczej abstrakcyjnej metody (SAM) OnWatchfaceColorsListener ogólnym typem SAM Java (konsument, I0c489)
  • Wycofaliśmy stare metody getOrCreateInteractiveWatchFaceClient i listenableGetOrCreateInteractiveWatchFaceClient, które nie określają PreviewImageUpdateRequestedListener. (Iec502).

Poprawki błędów

  • Nazwa konta DisconnectReason.BINDER_DIED została zmieniona na DisconnectReason.ENGINE_DIED. (I4eb0e).

Wersja 1.2.0-alpha01

10 sierpnia 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.2.0-alpha01 została zwolniona. Wersja 1.2.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy eksperymentalną obsługę różnych nowych formatów widżetów. Nad tym obszarem pracujemy, a te nowe formaty mogą ulec zmianie bez powiadomienia. CanvasComplicationDrawable nie obsługuje obecnie mechanizmu renderowania.
  • Dodaliśmy też opcjonalne marginesy do boksów widżetów, które ułatwiają klikanie małych widżetów.

Zmiany interfejsu API

  • Eksperymentalnej klasy BoundingArc nie można teraz zmienić. (If624a).
  • Małe widżety mogą być trudne do kliknięcia. Aby temu zaradzić, wprowadziliśmy obsługę marginesów, które zwiększają klikalny obszar bez wpływu na renderowanie. O ile nie określono inaczej (w kodzie lub w formacie XML), ComplciationSlots ma zerowe marginesy. (I14089)
  • Zmieniono podpis getComplicationSlotInflationFactory(CurrentUserStyleRepository), aby zwracał niepustą instancję fabryczną. Zwracanie wartości null wcześniej powodowało błąd, więc umowa dotycząca interfejsu API jest bardziej zrozumiała. (I0fcc0)
  • Dodaliśmy argument currentUserStyleRepository do metody WatchFaceService.getComplicationSlotInflationFactory, aby zapewnić spójność z createComplicationSlotsManager. (I2ddd2)
  • Funkcja UserStyleFlavors nie jest obecnie funkcją eksperymentalną. (I69cdc).
  • Usunęliśmy eksperymentalną ValueType z tabeli RangedValueComplicationData i wprowadziliśmy eksperyment DiscreteRangedValueComplicationData, który jest podobny do RangedValueComplicationData, z wyjątkiem zakresu i wartości całkowitej. Wprowadziliśmy również eksperymentalną GoalProgressComplicationData, która jest podobna do RangedValueComplicationData, z tą różnicą, że chodzi o postęp w dążeniu do celu, w którym minimalnie domyślnie wynosi zero, a wartość może być większa niż targetValue. Uwaga: dla wszystkich wariantów atrybutu RangedValue należy podać co najmniej jeden element monochromeImage, tekst lub tytuł. (I9590C)
  • Usunęliśmy pakiet boundsWithMargins z kategorii ComplicationSlotState, ponieważ w oprogramowaniu systemowym nie ma żadnego przypadku użycia. (I42e26)
  • Dodaliśmy eksperymentalną obsługę elementu WeightedElementsComplicationData, która obejmuje tablicę Elementów (pary wagi i koloru) oraz opcjonalny tekst, tytuł i obraz. Można je wyświetlać w postaci wykresu kołowego, w którym kolory muszą mieć znaczenie w kontekście, ponieważ zazwyczaj nie ma już miejsca na dodawanie etykiet. (I87eea).
  • Eksperymentalne pole ColorRamps używane opcjonalnie przez funkcje RangedValueComplicationData i GoalProgressComplicationData umożliwia teraz określenie sekwencji maksymalnie 7 kolorów oraz flagi informującej, czy kolory powinny być płynne, czy też należy renderować kolory jednolitego koloru o jednakowej wielkości. (I9f5bf)
  • Parametr RangedValueComplicationData.drawSegmented został zmieniony na valueType, który jest liczbą całkowitą z odpowiednią wartością ValueType IntDef, która nadaje znaczenie semantycznemu zakresowi wartości i może być używana przez mechanizm renderowania widżetu do wpływania na styl. (I0616B)
  • Do usługi RangedValueComplicationData dodaliśmy eksperymentalną obsługę opcji ColorRanges. Normalnie widżety są renderowane w kolorach wybranej tarczy zegarka, ale czasami ComplicationDataSource najlepiej jest umieścić je, aby ustawić kolory, np. gdy mają one określone znaczenie semantyczne. Przykład: zmiana koloru z czerwonego na niebieski. (I5153a)
  • W aplikacji RangedValueComplicationData dodaliśmy eksperymentalną wskazówkę dotyczącą drawSegmented. Wskazuje to mechanizmom renderowania, że muszą narysować wskaźnik zakresu wartości z segmentami, gdzie 1 segment = 1 jednostka. (I7d7c1)

Poprawki błędów

  • Dodaliśmy możliwość definiowania obiektu ComplicationSlotBounds w odniesieniu do wstępnie zdefiniowanego układu współrzędnych ekranu. (I0985D)

Wersja 1.1

Wersja 1.1.1

10 sierpnia 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.1 została zwolniona. Wersja 1.1.1 zawiera te zatwierdzenia.

  • Jest to wersja z poprawką błędów i zdecydowanie zachęcamy użytkowników do uaktualnienia do wersji 1.1.0.

Poprawki błędów

  • Inicjowanie tarczy zegarka jest asynchroniczne. Jeśli otrzymasz widżet, zanim tarcza będzie gotowa, zostanie ona umieszczona na liście pendingInitialComplications i zastosuje się później. Funkcja pendingInitialComplications została zastosowana zbyt wcześnie, co oznaczało, że podczas inicjowania tarczy zegarka widżety nadal były umieszczane na urządzeniu pendingInitialComplications i ignorowane. Rozwiązaliśmy już ten problem. Oprócz tego ta poprawka zawiera błąd, który powodował, że usługa ComplicationRenderer niewłaściwie próbowała asynchronicznie wczytywać obiekty zastępcze, co powodowało, że grafika kompilacji się nie aktualizowała. Ta poprawka ma nadzieję, że rozwiązuje ten teoretyczny błąd polegający na tym, że należy scalić wiele elementów pendingInitialComplications. (0d03ba3)

  • Napraw potencjalną blokadę zakleszczeń w regionie InteractiveInstanceManager, w której system getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance blokował blokadę dłużej, niż było to konieczne. Zazwyczaj zwykle oczekujemy, że interfejs engine.setUserStyle będzie szybko działać, ale jeśli z jakiegoś powodu nie jest, może dojść do zakleszczenia lub błędu ANR. Ta poprawka pozwala wyeliminować niepotrzebną pracę, eliminując ryzyko zakleszczeń.(5a2adca)

  • Napraw kilka błędów, które spowodowały, że witryna WatchFaceService została zachowana. WakeLock może czasem zachować WatchFaceService. Dodanie wywołania release() rozwiązuje ten problem. StateFlows może też zachować WatchFaceService, anulując podstawowe poprawki CoroutineScopes.(fd48138)

  • Dodaj limity czasu oczekiwania do awaitDeferredWatchFace* i napraw watchfaceOverlayStyle NullPointerException. W normalnych okolicznościach nie powinno to przekraczać limitu czasu, łącznie z sytuacjami DirectBoot po nowej instalacji i sytuacjach, w których obciążenie procesora jest wysokie. Naprawiliśmy też, jeśli funkcja getWatchfaceOverlayStyle została wywołana po funkcji close().(a4c3a5a).

Wersja 1.1.0

15 czerwca 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.0 została zwolniona. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany wprowadzone od wersji 1.0.0

Ulepszona edycja:

  • Dodaliśmy obsługę schematów hierarchicznych, co umożliwia opisywania hierarchii stylów przez interfejsy użytkownika edytora. Możesz teraz określić oddzielne ikony do użycia na tarczy zegarka i w edytorach towarzyszących.
  • Istnieje możliwość akceptacji dla wielu wystąpień tarczy zegarka – każda instancja ma unikalny identyfikator dostępny na wszystkich platformach API.
  • Możesz teraz określać czytelne nazwy dla użytkownika ComplicationSlots, które będą używane w edytorach.
  • Eksperymentalna obsługa stylów „smaków” i wyselekcjonowane style, które będą widoczne w edytorze towarzyszącym.
  • Podczas edytowania 2 instancji tarczy zegarka możesz teraz współdzielić zasoby, oszczędzając pamięć
  • Podczas wybierania widżetu w edytorze tarczy zegarka wstępnie wybierany jest obecny dostawca.

Ulepszone widżety:

  • Możesz teraz określić ComplicationType dla podstawowych i dodatkowych źródeł danych, co daje deweloperom większą elastyczność podczas gotowego działania.
  • Dodaliśmy funkcję ComplicationDataTimeline, która zapewnia sekwencję ograniczonych czasowo danych, które są wysyłane do tarczy zegarka, które mogą być buforowane i aktualizowane automatycznie. Na przykład prognoza pogody na dziś o różnych porach lub nadchodzących wydarzeniach w kalendarzu.
  • Komponent ComponentName dostawcy widżetu jest częścią ComplicationData.
  • Widżety są teraz zapisywane w pamięci podręcznej, co ułatwia przełączanie się między tarczami zegarka.

Inne zmiany:

  • Elementy UserStyleSchema i ComplicationSlots można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarczy zegarka i pozwala systemowi szybciej wysyłać zapytania o metadane.
  • Tarcze zegarka mogą teraz wpływać na kolory używane do renderowania nakładki systemowej.

Wersja 1.1.0-rc01

18 maja 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.0-rc01 została zwolniona. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Wprowadziliśmy kilka ulepszeń w obsłudze obsługi kodu XML tarczy zegarka, aby ułatwić określenie elementu ComplicationSlotBounds i pomocnych odwołań. Trwają eksperymenty z wiodącym widżetem BoundingArc. Przesyłamy go do usługi drawHighlight, choć w tej chwili nie zalecamy jej używania.

Zmiany interfejsu API

  • Dodaliśmy eksperymentalne przeciążenie drawHighlight, które akceptuje parametr BoundingArc. (I705f8)
  • Kod XML tarczy zegarka obsługuje teraz odwołania do zasobów. Pozwala na używanie tych samych stałych zarówno w pliku XML, jak i w kodzie. (I3ef61).
  • Dodaliśmy możliwość definiowania ComplicationSlotBounds w formularzach center_x, center_y, size_x, size_y. Teraz można też używać różnych jednostek (np. dp), korzystając z odwołań do zasobów. (IAce98).

Poprawki błędów

  • Napraw problem runBlockingWithTracing, który uruchamiał zadania w niewłaściwym kontekście.(4f595fe)
  • Włącz synchronizację synchroniczną BaseEditorSession.close. Problem z asynchronizacją funkcji BaseEditorSession.close polega na tym, że za późno udostępniliśmy ComplicationDataSourceInfoRetriever, co spowodowało spam ostrzegawczy w dzienniku logcat. Było to prawdopodobnie nieszkodliwe, ale spamowanie logcat jest uciążliwe i należy go unikać.(35a5308)

Wersja 1.1.0-beta02

11 maja 2022 roku

Usługa androidx.wear.watchface:watchface-*:1.1.0-beta02 została zwolniona. Wersja 1.1.0-beta02 zawiera te zatwierdzenia.

Nowe funkcje

  • Dodaliśmy eksperymentalną obsługę nowych typów ComplicationData, które nie są jeszcze gotowe do użycia, ale zachęcamy do zaglądania w to miejsce.

Zmiany interfejsu API

  • Dodaliśmy BoundingArc, eksperymentalną klasę opisującą geometrię boksu do widżetów brzegowych. Zostało ono dodane do: ComplicationSlot i przeprowadzone przez firmy ComplicationSlotState i WatchFaceMetadataClient. (I61a40)
  • Dodaliśmy możliwość dziedziczenia ustawień w pliku XML UserStyleSetting. Pozwala zmniejszyć szczegółowość i udostępniać ustawienia między tarczami zegarka. (Ief841).
  • Dodaliśmy 2 nowe typy eksperymentalne ComplicationData: ListComplicationData i ProtoLayoutComplicationData. Obecnie żaden z tych typów nie obsługuje renderowania, a Wear OS ich obecnie nie rozpoznaje po dodaniu do pliku manifestu ComplicationDataSource's. (I1811C).

Poprawki błędów

  • Napraw serializację typu TimeLineEntry. Nie zserializowaliśmy typu TimeLineEntry, co oznaczało, że TimeLineEntries typu NoData przechowywane w pamięci podręcznej byłyby błędnie interpretowane, ponieważ typ widżetu nadrzędnego prowadzi do NPE w przypadku uzyskania dostępu do nieistniejących wymaganych pól. (55ffdf5).
  • Naprawianie błędu, który powodował, że użytkownik setComplicationData usunął pola osi czasu(fb392f5)
  • Naprawia błąd, który powodował, że bardzo sporadycznie funkcja runBlockingWithTracing prowadziła do NPE(12ca62e).
  • Usunęliśmy błąd, który powodował, że czasem po otrzymaniu widżetu pojawia się ClassNotFoundException: android.support.wearable.complications.ComplicationText.(217942d9)
  • Naprawia błąd w trybie GlesRenderer.backgroundThreadInitInternal, który powodował, że wywołanie onBackgroundThreadGlContextCreated odbywało się tylko w przypadku wywołania funkcji EGL14.eglCreateContext. Naprawiono inny błąd związany z wizualną usterką na zrzucie ekranu spowodowanym przez regułę verticalFlip (c674ad2).
  • Popraw sprawdzanie wersji XML (WatchFaceService), ponieważ ładował się on z niewłaściwego pakietu.(dfa06f3)
  • Format przewodu zastępczego używa teraz pakietu wewnętrznego. Nie chcemy, aby obiekty zastępcze zepsuły istniejące tarcze zegarka, które mogą korzystać z ukrytego wewnętrznego pliku a.s.w.c.ComplicationData. Dotychczas format drutu danych NoDataComplication zapisywał obiekt zastępczy w zwykłych polach (problematyczny, ponieważ stare tarcze zegarków renderowałyby ciąg zastępczy, co nie było zamierzone). Zamiast tego do pełnego wyizolowania takiego obiektu używamy teraz pakietu wewnętrznego (d5e7bd2).

Wersja 1.1.0-beta01

20 kwietnia 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.0-beta01 została zwolniona. Wersja 1.1.0-beta01 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Teraz metody WatchFaceMetadataClient (getUserStyleSchema, getComplicationSlotMetadataMap, getUserStyleFlavors) i HeadlessWatchFaceClient.getUserStyleFlavors zgłaszają niezaznaczony wyjątek RuntimeException zamiast WatchFaceException. (I0718a)
  • Element WatchFaceMetadataClient.WatchFaceException został przeniesiony poza zajęcia, aby można było go ponownie użyć. (I4e869).

Poprawki błędów

  • WatchFaceMetadataClient nie będzie już ulegać awarii po wysłaniu części ComplicationSlotBounds.(Iaafd)

Wersja 1.1.0-alpha05

6 kwietnia 2022 roku

Usługa androidx.wear.watchface:watchface-*:1.1.0-alpha05 została zwolniona. Wersja 1.1.0-alfa05 zawiera te zatwierdzenia.

Nowe funkcje

  • Możesz teraz określić, z którego źródła danych został wysłany ComplicationData, sprawdzając element ComplicationData.dataSource. Niektóre tarcze zegarka mogą korzystać z tego do dostosowywania wyświetlacza widżetów. (I44a73)

Zmiany interfejsu API

  • Metody Renderer.CanvasRenderer i Renderer.GlesRenderer zostały wycofane i zastąpione elementami Renderer.CanvasRenderer2 oraz Renderer.GlesRenderer2, które obsługują SharedAssets przekazywane do metod renderowania. W przypadku interoperacyjności języka Java wprowadziliśmy ListenableCanvasRenderer2 i ListenableGlesRenderer2. (I31ffa).
  • Dodano możliwość definiowania smaków w @WatchFaceFlavorsExperimental – wstępnie skonfigurowana lista tarcz zegarka (I04dd0)
  • Renderer.sharedAssets to teraz StateFlow i usunęliśmy nieużywany parametr Renderer.SharedAssetsFactory (I12ac5)
  • Interfejs UserStyleSchema.userStyleSettings nie jest już wycofany (Iba7e3)
  • Dodano funkcję HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, która pozwala HeadlessWatchFaceClient uniknąć stosunkowo niewielkiego narzutu związanego z przekazywaniem schematu przez AIDL przed obliczeniem haszu skrótu. (I33597)
  • Do zasady WatchFaceMetadataClient dodaliśmy wartość isUserStyleSchemaStatic. Ma ona wartość prawda tylko wtedy, gdy pakiet UserStyleSchema może się zmieniać, chyba że pakiet APK tarczy zegarka zostanie zaktualizowany. (I45a3f)
  • Do elementu UserStyleSchema dodaliśmy funkcję getDigestHash, która oblicza hasz skrótu schematu. Może to służyć do efektywnego sprawdzania, czy w elemencie typu UserStyleSchema uległy zmianie. (I2063D)
  • Nazwa tematu zmieniona z METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED na METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • Nazwa UserStyleSetting.OnWatchEditorData została zmieniona na UserStyleSetting.WatchFaceEditorData. Zawiera dane, które są używane wyłącznie przez edytor tarczy zegarka. (If3afb)

Wersja 1.1.0-alfa04

9 marca 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.0-alpha04 została zwolniona. Wersja 1.1.0-alfa04 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Aktualne ComplicationData może nie być dostępne (np. wygasło ComplicationData w pamięci podręcznej), dlatego wzbogaciliśmy NoDataComplication o opcjonalny obiekt zastępczy ComplicationData oraz dodaliśmy ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER i PhotoImage.PLACEHOLDER, których można używać tylko wewnątrz kontekstu zmiennej NoDataComplicationData. Jeśli wybierzesz te obiekty zastępcze, sugerowane będzie renderowanie z szarą ramką lub łukami. (I6285D)
  • Dodaliśmy ComplicationData.getNextChangeInstant, który informuje o kolejnym wyszukiwaniu dynamicznym, przy którym dowolne pole widżetu może się zmienić. Jest używana wewnętrznie do planowania klatek na potrzeby aktualizacji widżetów. Jeśli np. tarcza zegarka zwykle aktualizuje się raz na minutę, widżet stopera będzie aktualizowany raz na sekundę. (I7ceb2).
  • EditorSession.watchFaceId można teraz używać na wszystkich poziomach interfejsu API. Dodatkowo jego wartość będzie teraz zawsze zgodna z zasadą WatchState.watchFaceInstanceId. (I323b9)
  • Interfejs API getPendingIntentForTouchEvent nie jest już potrzebny, ponieważ problem został już rozwiązany w ramach platformy, więc wszystkie powiązane interfejsy API zostały usunięte. Tarcze zegarka nie muszą robić nic szczególnego, aby aplikacja PendingIntents się uruchomiła, nawet jeśli niedawno został naciśnięty przycisk ekranu głównego. (I1f2e8)
  • Dodaliśmy wartość RendererParameters.isForScreenShot, która ma wartość Prawda, jeśli renderowanie dotyczy zrzutu ekranu. Niektóre tarcze z animacjami muszą o tym wiedzieć, aby móc wprowadzać odpowiednie poprawki. (I96d99)
  • Dodaliśmy WatchFaceExceptionReason do dokumentu WatchFaceException, by wyjaśnić, co poszło nie tak. (I01d15).
  • Usunięto reakcję ComplicationDataSourceService.onImmediateComplicationRequest. Zamiast niej dodaliśmy ciąg ComplicationRequest.immediateResponseRequired, który zasygnalizuje, że dostawca musi odpowiedzieć szybko (najlepiej w czasie < 100 ms). Pamiętaj, że ta funkcja jest chroniona przez uprawnienie com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE z podwyższonymi uprawnieniami. (IE6b23)
  • Zaktualizowano wartość null w podstawowej i kompatybilnej aplikacji, aby dopasować ją do Tiramisu DP2 (I0cbb7)

Poprawki błędów

  • Teraz aplikacja tarczy zegarka ulega awarii (z wyjątkiem w przypadku niepowodzenia weryfikacji schematu (Ia400f)

Wersja 1.1.0-alfa03

9 lutego 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.0-alpha03 została zwolniona. Wersja 1.1.0-alfa03 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Dodaliśmy eksperymentalną obsługę schematów stylów hierarchicznych. Do aplikacji androidx.wear.watchface.style.UserStyleSetting.Option dodaliśmy nową usługę. Są to ustawienia podrzędne, których początkowo używa tylko ListOption. Pozwala to opisywać hierarchię stylów do wykorzystania w interfejsach edytora. Bazowy styl UserStyle nie uległ zmianie i nadal to Map<String, ByteArray>. (Iaf6f4).
  • Dodaliśmy WatchFace.OverlayStyle, który pozwala tarczy zegarka skonfigurować renderowanie nakładki stanu systemu. (I8520D)
  • Wprowadziliśmy clearWithBackgroundTintBeforeRenderingHighlightLayer nowy opcjonalny parametr konstruktora dla CanvasRenderer (domyślnie jest to false). Jeśli ustawisz wartość prawda, obszar roboczy zostanie wyczyszczony z kolorem tła. (IE01e5).
  • Dodano klucz metadanych androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED, który pozwala źródłom danych widżetów sygnalizowanie, że mogą podać wartość domyślną bez konieczności konfigurowania (Icc0d4).
  • Podczas edytowania tarczy zegarka często pojawia się zarówno instancja interaktywna, jak i bez interfejsu graficznego. Aby pomóc oszczędzać pamięć, wprowadziliśmy Renderer.SharedAssets, który umożliwia mechanizmowi renderowania tarczy zegarka udostępnianie stałych danych (np. tekstur i cieniowań) między instancjami. Metody GlesRenderer.setEglConfig i GlesRenderer.setEglDisplay zostały wycofane i nigdy nie powinny być możliwe do skonfigurowania, a jego działanie spowodowałoby nieokreślone zachowanie. (I0d9e7)
  • Do elementu ComplicationSlot.Builder i odpowiadających im metod pobierania w elemencie androidx.wear.watchface.client.ComplicationSlotState dodaliśmy elementy setNameResourceId i setScreenReaderNameResourceId (które odwołują się do zasobów w postaci ciągu znaków). Dzięki temu system może pobierać nazwy obiektów ComplicationSlots do wykorzystania w edytorach i czytnikach ekranu. (If6c6a).
  • WatchfaceMetadataClient.getUserStyleSchema i getComplicationSlotMetadataMap przesyłają teraz WatchFaceException zamiast RemoteException. (I86f11)
  • Nazwy funkcji onSynchronousComplicationRequest i powiązanych z nimi funkcji w aplikacji ComplicationDataSourceService zostały zmienione na onImmediateComplicationRequest itp... (I87Ba0)
  • Edytory tarcz zegarka oferują znacznie mniej miejsca na ekranie niż edytory towarzyszące, dlatego warto obsługiwać różne ikony w edytorach tarcz zegarka. Ta poprawka dodaje element OnWatchEditorData (obecnie zawierający tylko ikonę) do wszystkich klas UserStyleSettings, a także tam, gdzie jest to konieczne, do ich klas Option. (If1886).
  • Do konstruktora ListenableGlesRenderer dodaliśmy element @JvmOverloads, aby zapewnić lepszą współpracę w języku Java. (I2974a)

Poprawki błędów

  • Konstruktor ListenableGlesRenderer jest teraz prawidłowo oznaczony jako @Throws(GlesException::class) i można teraz rozszerzyć tę klasę w kodzie Java. (Iac6d0).
  • Usunęliśmy błąd związany z nieprawidłową obsługą funkcji tapAction PhotoImageComplicationData (I1cc30).

Wersja 1.1.0-alfa02

12 stycznia 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.1.0-alpha02 została zwolniona. Wersja 1.1.0-alfa02 zawiera te zatwierdzenia.

Nowe funkcje

  • Aby ułatwić debugowanie i testowanie, ComplicationData i powiązane podklasy mają teraz zastąpione metody haszcode, równości i toString, co ułatwia ich pracę.

Zmiany interfejsu API

  • Metody WatchfaceMetadataClient ponownie powodują wywołanie metody RemoteExceptions w odpowiednich miejscach. Ułatwia to kodowi klienta wychwycenie błędów na tarczy zegarka. (I78785)
  • ComplicationData i klasy podrzędne mają teraz kod skrótu, równa się i toString. (I24Bc6)

Wersja 1.1.0-alpha01

15 grudnia 2021 roku

Usługa androidx.wear.watchface:watchface-*:1.1.0-alpha01 została zwolniona. Wersja 1.1.0-alfa01 zawiera te zatwierdzenia.

Nowe funkcje

  • Elementy UserStyleSchema i ComplicationSlots można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarczy zegarka. Poza tym zapytania WatchFaceMetadataClient są szybsze, ponieważ nie muszą być powiązane z usługą, aby uzyskać metadane. WatchFaceMetadataClient i ListenableWatchFaceMetadataClient nie są już w wersji eksperymentalnej i stają się częścią stabilnego interfejsu API. System będzie mógł opcjonalnie obsługiwać wiele wystąpień tarczy zegarka, z których każda będzie mieć inny styl zdefiniowany przez użytkownika. Będą one widoczne w selektorze tarcz zegarka. Aby można było włączyć tę funkcję, tarcza musi zawierać w pliku manifestu ten metatag, który zawiera ten tag.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • Niektóre tarcze zegarka mają stan, którego nie rejestruje UserStyle. W związku z tym identyfikator instancji tarczy zegarka jest teraz dostępny w usłudze WatchState.watchFaceInstanceId.

  • Plik ComplicationData jest teraz buforowany, aby widżety mogły być wyświetlane od razu po wczytaniu. Czasami ComplicationData jest przechowywany w pamięci podręcznej systemu przez system, a czasem jest szeregowany przez biblioteki tarczy zegarka. Po zserializacji powiązane działanie TapAction zostanie utracone, jeśli tak się stanie, ComplicationData.tapActionLostDueToSerialization zwróci wartość true, a tarcza zegarka powinna inaczej renderować widżet (np. wyszarzony lub półprzezroczysty), aby zasygnalizować, że nie można go kliknąć. System jak najszybciej wyśle zaktualizowany plik ComplicationData z atrybutem tapAction.

  • Niektóre ComplicationData nie powinny być przechowywane w pamięci podręcznej przez długi czas. W związku z tym dodaliśmy bardziej ogólną funkcję ComplicationDataTimeline. Przy jego użyciu można utworzyć sekwencję ograniczonych czasowo wartości ComplicationData, które mają być wysyłane do tarczy zegarka, która może być buforowana i aktualizowana automatycznie. Na przykład prognoza pogody na dziś o różnych porach lub nadchodzących wydarzeniach w kalendarzu. Metoda ComplicationRequestListener została rozszerzona o nową metodę onComplicationDataTimeline, której możesz użyć do zwrócenia tych danych.

  • Źródło DefaultComplicationDataSourcePolicy zostało rozszerzone, możesz więc określić ComplicationType dla podstawowych i dodatkowych źródeł danych.

  • Dodaliśmy obsługę aplikacji z widżetami synchronicznymi, w przypadku których widżet jest aktualizowany częściej niż zwykle, do raz na sekundę, gdy tarcza zegarka jest widoczna bez otoczenia. Uwaga: dostawcy widżetów synchronicznych mogą mieć ograniczone wykorzystanie ze względu na potencjalne problemy z obciążeniem pamięci.

  • Zmiany w usłudze PendingIntentTapListener prawdopodobnie zostaną cofnięte, ponieważ rozwiązaliśmy podstawowy problem (nie jest możliwe, aby tarcza uruchamiała aktywności przez 5 sekund po naciśnięciu przycisku ekranu głównego) w ramach platformy.

Zmiany interfejsu API

  • Komponent ComplicationData.isCached został zmieniony na tapActionLostDueToSerialization. Jest to bardziej przydatne przy określaniu, czy boks widżetu ma być renderowany inaczej, by zasygnalizować, że nie można go kliknąć. (I6de2f).
  • Dodano ComplicationDataTimeline do listy wear-complication-data-source. Przy jego użyciu można utworzyć sekwencję ograniczonych czasowo wartości ComplicationData, które mają być wysyłane do tarczy zegarka, która może być buforowana i aktualizowana automatycznie. Na przykład prognoza pogody na dziś o różnych porach lub nadchodzących wydarzeniach w kalendarzu. Metoda ComplicationRequestListener została rozszerzona o nową metodę onComplicationDataTimeline, której możesz użyć do zwrócenia tych danych. Udostępniliśmy nowy kod kotlin SuspendingTimelineComplicationDataSourceService do zawieszania usług źródła danych. (Idecdc)
  • Dodano PendingIntentTapListener i WatchFaceControlClient.getPendingIntentForTouchEvent. Może to pomóc w rozwiązaniu problemu polegającego na tym, że platforma blokuje uruchamianie nowych działań przez 5 sekund po naciśnięciu przycisku ekranu głównego. (I98074)
  • Wprowadziliśmy pamięć podręczną ComplicationData dla poszczególnych tarcz zegarka. Dzięki temu tarcza zegarka może wyświetlać ostatnie znane wartości widżetów podczas wczytywania, dopóki system nie zdołał ich zaktualizować. Dostępna jest nowa metoda interfejsu API WatchFaceControlClient.hasComplicationCache przeznaczona dla producentów OEM. Może to wpłynąć na strategię systemu dotyczącą wysyłania widżetów na tarczę zegarka. Dodatkowo ComplicationData ma właściwość isCached i zalecamy, aby widżety z pamięci podręcznej były renderowane w inny sposób, ponieważ elementu tapAction nie można buforować i znajduje się on w takim widżetie jako null. (I404b0)
  • Identyfikator instancji tarczy zegarka jest teraz dostępny w WatchState.watchFaceInstanceId. Większość tarcz zegarka nie musi z niego korzystać, ale jeśli istnieje stan tarczy zegarka, który nie jest przechowywany w schemacie, klucz ten jest niezbędny do rozpoznania wystąpienia tarczy zegarka. Aby Ci w tym pomóc, możesz teraz podać identyfikator podczas rozmowy z firmą WatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98).
  • Rozszerzony zakres DefaultComplicationDataSourcePolicy z możliwością ustawienia domyślnej wartości ComplicationTypes dla głównego, dodatkowego dostawcy systemu oraz dla zastępczego dostawcy systemu. Interfejs ComplicationSlot.defaultDataSourceType został wycofany. (If0ce3).
  • Aplikację ComplicationSlot.configExtras można teraz zmienić przed wywołaniem telefonu EditorSession.openComplicationDataSourceChooser(). (I6f852)
  • Dodano WatchFace.setComplicationDeniedDialogIntent i setComplicationRationaleDialogIntent. Intencje te uruchamiają się, aby wyświetlać okno z uzasadnieniem przed wysłaniem prośby o uprawnienia do widżetu oraz kolejne okno wyjaśniające, że w przypadku próby edytowania widżetu wymagane są uprawnienia do widżetu (gdy odmówiono uprawnień, wybór dostawcy nie otworzy się, więc to okno jest potrzebne). (I3a29c).
  • Elementy UserStyleSchema i ComplicationSlots można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarczy zegarka i przyspiesza wykonywanie zapytań do usługi WatchFaceMetadataClient, ponieważ nie muszą one być powiązane z usługą, aby uzyskać metadane. (I85bfa)
  • Dodano InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent, aby klient mógł określić, czy tarcza zegarka obsługuje getPendingIntentForTouchEvent. (I0B917)
  • WatchFaceMetadataClient i ListenableWatchFaceMetadataClient nie są już eksperymentalne. Można ich używać do efektywnego uzyskiwania metadanych tarczy zegarka, gdy jest to możliwe, bez otwierania powiązanego z nią elementu. (Ibb827)
  • Dodaliśmy obsługę dostawców widżetów synchronicznych, w przypadku których widżet jest aktualizowany z większą częstotliwością niż zwykle, maksymalnie raz na sekundę, gdy tarcza zegarka jest widoczna bez otoczenia. Aby można było użyć tej funkcji, dostawca musi uwzględnić w pliku manifestu nowy tag metadanych androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS i zastąpić tag onSynchronousComplicationRequest. W zależności od rodzaju źródła danych może być też konieczne zastąpienie wartości onStartSynchronousComplicationRequests i onStopInteractiveComplicationRequests, aby otrzymywać powiadomienia o tym, kiedy widżet uruchamia się w trybie interaktywnym i znika z niego. (I8fe9d)

Wersja 1.0

Wersja 1.0.1

9 lutego 2022 r.

Usługa androidx.wear.watchface:watchface-*:1.0.1 została zwolniona. Wersja 1.0.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunęliśmy błąd związany z nieprawidłową obsługą funkcji tapAction PhotoImageComplicationData (I1cc30).

Wersja 1.0.0

1 grudnia 2021 r.

Usługa androidx.wear.watchface:watchface-*:1.0.0 została zwolniona. Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje 1.0.0

Pakiet androidx.wear.watchface to nowa zalecana biblioteka do tworzenia tarcz zegarka z Wear OS. Ma wiele nowych funkcji w porównaniu do starej biblioteki pomocy dotyczącej urządzeń do noszenia.

  • Styl użytkownika (np.zmiana palety kolorów, stylu wskazówek zegara, wyglądu znaków godziny itp.) jest bezpośrednio obsługiwany przez bibliotekę (patrz androidx.wear.watchface.style). Teraz znacznie łatwiej jest opracować edytor tarcz zegarka za pomocą aplikacji androidx.wear.watchface.editor, a tarczę zegarka można edytować w systemowej aplikacji towarzyszącej bez konieczności pisania dodatkowego kodu.
  • Wprowadzone sprawdzone metody Biblioteka automatycznie generuje etykiety treści czytnika ekranu pod kątem powikłań (możesz też dodać własne). Liczba klatek na sekundę zmniejsza się, gdy bateria jest słaba i nie ładuje się, aby wydłużyć jej żywotność.
  • Do opracowania tarczy zegarka potrzeba mniej kodu, zwłaszcza w przypadku powikłań, które polegają na przeniesieniu wielu elementów do biblioteki.

Poprawki błędów

  • Rozwiąż problem z kartą EditorSession.userStyle.compareAndSet (I6f676)
  • Korygowanie bardzo krótkich opóźnień tarcz zegarka (Iffb97)
  • Wyślij InteractiveWatchFaceImpl.onDestroy w wątku UI (I83340)
  • Rozwiązywanie problemów z odbiornikami (I7d25f)

Wersja 1.0.0-rc01

3 listopada 2021 r.

Usługa androidx.wear.watchface:watchface-*:1.0.0-rc01 została zwolniona. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono błąd dump() (wywoływany przez adb shell dumpsys), który został uszkodzony w wyniku migracji przepływu. (087cf9e).

  • Zadbaj o prawidłową kolejność elementów WriteDirectBootPrefs. Chcemy, aby funkcje WriteDirectBootPrefs zawsze uruchamiały się po metodzie initStyleAndComplications. W przeciwnym razie istnieje ryzyko opóźnienia inicjowania wątku UI.(37650ac)

  • Sprawdź, czy metoda Renderer.onDestroy jest wywoływana. W sytuacji, gdy mechanizm renderowania został utworzony, ale inicjowanie WF nie zostało ukończone, a wywołanie Engine.onDestroy jest wywoływane, musimy wywołać metodę Renderer.onDestroy. (F9952dc)

  • Optymalizacja/poprawka na isBatteryLowAndNotCharging. Ta poprawka przenosi początkową konfigurację funkcji isBatteryLowAndNotCharging wcześniej, co oznacza, że można ją przeprowadzić równolegle z funkcją createWatchFace. Dodatkowo słuchamy teraz także ACTION_POWER_DISCONNECTED. (ddffd80

  • InteractiveWatchFaceClientImpl.isConnectionAlive to false po zamknięciu (ab9774e)

Wersja 1.0.0-beta01

27 października 2021 roku

Usługa androidx.wear.watchface:watchface-*:1.0.0-beta01 została zwolniona. Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Wersja 1.0.0-alfa24

13 października 2021 r.

Usługa androidx.wear.watchface:watchface-*:1.0.0-alpha24 została zwolniona. Wersja 1.0.0-alfa24 zawiera te zatwierdzenia.

Zmiany interfejsu API

  • Zajęcia z pakietu androidx.wear.watchface.complications zostały przeniesione do nowego projektu wear:watchface:watchface-complications. Pamiętaj, że nie możesz dodać tej biblioteki razem z jej wcześniejszymi wersjami alfa wear:watchface:watchface-complications-data, ponieważ wystąpią błędy dotyczące zduplikowanych klas. (I97195)
  • Nazwa pliku Renderer.dump została zmieniona na Renderer.onDump i została oznaczona adnotacją @UiThread. (I44845)
  • Nazwa usługi InteractiveWatchFaceClient.addWatchFaceReadyListener została zmieniona na addOnWatchFaceReadyListener, a nazwa removeWatchFaceReadyListener została zmieniona na removeOnWatchFaceReadyListener. (I48fea)
  • Sesja edytora getComplicationsPreviewData i getComplicationsDataSourceInfo nie są już zawieszanymi funkcjami. Zamiast tego są właściwościami StateFlow<>, których początkowo wartość jest równa null. W ListenableEditorSession getListenableComplicationPreviewData i getListenableComplicationsProviderInfo zostały usunięte nowe obiekty StateFlow<> z klasy podstawowej. Jeśli musisz nasłuchiwać zmian w kodzie Javy, rozważ użycie androidx.lifecycle.FlowLiveDataConversions.asLiveData do konwersji na LiveData<>. (IC5483).

Wersja 1.0.0-alfa23

29 września 2021 r.

Usługa androidx.wear.watchface:watchface-*:1.0.0-alpha23 została zwolniona. Wersja 1.0.0-alfa23 zawiera te zatwierdzenia.

Nowe funkcje

Biblioteka tarcz zegarka stanowi teraz jedną grupę bibliotek, dlatego biblioteki zostały przeniesione. Musisz zaktualizować importy Gradle w ten sposób:

Stary Nowość
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

Zmiany interfejsu API

  • Przenieś osobną bibliotekę zegarka i widżety androidx.wear do grupy bibliotek androidx.wear.watchface. (B25f3c0)
  • Dodano funkcję EditorRequest.canWatchFaceSupportHeadlessEditing, która informuje klienta, czy edytor tarczy zegarka obsługuje edytowanie bez interfejsu graficznego. Zwróć uwagę, że w tym przypadku mogą pojawić się fałszywe wyniki negatywne, ponieważ obsługa została dodana w standardzie asop/1756809, jednak w przypadku wszystkich przyszłych tarcz będzie zwracać prawidłową wartość. (CA55590).
  • Mechanizm renderowania ma teraz metodę dump(), którą można zastąpić, aby dodać dane niestandardowe do informacji generowanych przez usługę WatchFaceService usługi ABD Shell dumpsys Activity Service. (95235f9).
  • Funkcja InteractiveWatchFaceClient.addWatchFaceReadyListener najpierw określa wykonawcy. (563ac2f).
  • Usunięto stan StateFlowCompatHelper. Zamiast niego należy użyć pliku asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
  • Nie można już zmienić wartości CurrentUserStyleRepository.userStyle. (I44889)
  • Nazwa WatchFaceReadyListener została zmieniona na OnWatchFaceReadyListener. (IC12a9).

Poprawki błędów

  • Pole InteractiveInstanceManager.deleteInstance, które powoduje wywołanie onDestroy. Jest to konieczne, aby funkcja InteractiveWatchFaceImpl pobierała śmieci.(fce4af8, b/199485839)