Tarcza zegarka Wear

Tworzenie aplikacji na zegarki z Wear OS by Google.

Uwaga: od stycznia 2026 r. format tarczy zegarka jest wymagany do instalowania tarcz zegarka na wszystkich urządzeniach z Wear OS.

Więcej informacji o zmianach widocznych dla użytkowników znajdziesz w tym artykule w Centrum pomocy.

Najnowsza aktualizacja Wersja stabilna Wersja kandydująca do publikacji Wersja beta Wersja Alfa
17 grudnia 2025 r. 1.2.1 - 1.3.0-beta01 -

Deklarowanie zależności

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

Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:

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

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk gwiazdki.

Tworzenie nowego problemu

Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.

Wersja 1.3

Wersja 1.3.0-beta01

17 grudnia 2025 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-beta01 Wersja 1.3.0-beta01 zawiera te zmiany.

Nowe funkcje

  • Dodano obsługę statycznych danych podglądu widżetu, w której dostawca widżetu może określić statyczne dane podglądu w swoim pliku manifestu. Więcej informacji znajdziesz w artykule androidx.wear.watchface.complications.data.parser.StaticPreviewDataParser.
  • Dodaliśmy klasę narzędziową ComplicationTextFormatting, która obsługuje formatowanie daty i godziny w jak najbardziej zwięzły sposób. Jest to przydatne w przypadku komplikacji, w których przestrzeń jest bardzo ograniczona.

Zmiany w interfejsie API

  • Właściwość eksperymentalna Renderer.watchfaceColors jest teraz prywatna. Ta usługa nadal ma publiczne funkcje dostępu. (Ifdf60, b/409363281)

Poprawki błędów

  • Projekty opublikowane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej. (I48968, b/407632515)

Wersja 1.3.0-alpha07

23 kwietnia 2025 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha07 Wersja 1.3.0-alpha07 zawiera te zmiany.

Nowe funkcje

  • Od jakiegoś czasu można definiować schemat UserStyle tarczy zegarka, a także definiować ColorUserStyleSetting w formacie XML.

Zmiany w interfejsie API

  • Projekty opublikowane w Kotlinie 2.0 wymagają użycia KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
  • Dodano interfejs Watch Face Push API, który umożliwia aplikacji na Wear OS programowe instalowanie tarczy zegarka na zegarku.

Poprawki błędów

  • Zachęcamy dostawców widżetów korzystających z wersji 1.3.0-alpha06 do uaktualnienia, ponieważ w następnej wersji WearOS naprawiono błąd powodujący awarię w przypadku używania ComplicationDataSourceUpdateRequester.

Wersja 1.3.0-alpha06

26 marca 2025 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha06 Wersja 1.3.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Interfejsy API tarcz zegarka na urządzenia z Wear (watchface, watchface-client, watchface-client-guava, watchface-complications-rendering, watchface-data, watchface-editor, watchface-editor-guava i watchface-style) zostały wycofane na rzecz Formatu tarczy zegarka na urządzenia z Wear i zostaną ostatecznie usunięte z AndroidaX. Interfejsy API komplikacji nie zostały wycofane i pozostaną dostępne. (Ice960)
  • Interfejsy API komplikacji mogą teraz komunikować się bezpośrednio z WearSDK, co jest bardziej wydajne ze względu na mniejszą liczbę przeskoków IPC.

Wersja 1.3.0-alpha05

15 stycznia 2025 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha05 Wersja 1.3.0-alpha05 zawiera te zmiany.

Nowe funkcje

W przypadku tarcz zegarka użytkownik może zwykle wybrać kolory za pomocą ListUserStyle. Chociaż to rozwiązanie działa, wymaga wysyłania ikon przez Bluetooth do edytora towarzyszącego, co jest nieefektywne. Dlatego wprowadziliśmy ColorUserStyleSetting, w którym ładunek to lista co najmniej jednego koloru na styl, co ma znacznie bardziej kompaktowy format transmisji.

Dodaliśmy funkcję dla producentów OEM, która umożliwia dostawcom widżetów OEM dodawanie dodatkowych informacji do ComplicationData na potrzeby tarcz zegarka OEM.

Zmiany w interfejsie API

  • Klasy UserStyleSettingUserStyleOption mają teraz konstruktory, które są zalecanym sposobem ich tworzenia. (Iacd03)
  • Obsługa przekazywania dodatkowych informacji w ComplicationData. Jest to przeznaczone dla producentów OEM, którzy kontrolują zarówno dostawcę komponentu, jak i odbiorczą tarczę zegarka. Ustawienie dodatku wymaga uprawnienia com.google.android.wearable.permission.COMPLICATION_EXTRAS. (I4e3b2)
  • Tarcze zegarka zwykle umożliwiają użytkownikowi wybór kolorów za pomocą ListUserStyle, z ikoną dla każdego ListOption. UserStyle schematy są przesyłane przez Bluetooth, dlatego ważne jest, aby ich rozmiar był jak najmniejszy. Może to być problem, jeśli podanych jest wiele opcji kolorów, ponieważ wszystkie te ikony zajmują miejsce. Aby to ułatwić, dodaliśmy symbol ColorUserStyleSetting w miejscach, w których opcja zawiera listę kolorów zamiast ikony, co jest znacznie bardziej kompaktowe. (Ib542e)
  • ColorUserStyleSettingColorOption wymagają interfejsu API w wersji 34. (I8771d)

Poprawki błędów

  • Ta biblioteka korzysta teraz z adnotacji o wartości null JSpecify, które są używane w typie. Deweloperzy Kotlin powinni używać tego argumentu kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict (jest to domyślny argument począwszy od wersji 2.1.0 kompilatora Kotlin). (Ifd363, b/326456246)

Wersja 1.3.0-alpha04

18 września 2024 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha04 Wersja 1.3.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy obsługę leniwego wczytywania ikon w UserStyleSettingsUserStyleOptions, co zwiększa wydajność wczytywania tarcz zegarka. (Iaf43d)
  • Dodaliśmy opcję wykonywania zaktualizowanego zrzutu ekranu za każdym razem, gdy zmienia się konfiguracja systemu (np. gdy zmieni się ustawienie regionalne) – za pomocą nowego elementu Watchface.setUpdateScreenshotOnConfigurationChange. Domyślnie to ustawienie jest wyłączone. (I765a1)

Poprawki błędów

  • Usunęliśmy ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 w AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz w przypadku wszystkich kompilacji podczas korzystania z AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klientom, którzy nie korzystają z AGP, zalecamy przejście na D8 w wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)

Wersja 1.3.0-alpha03

17 kwietnia 2024 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha03 Wersja 1.3.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy EditorSession#setOverrideComplications, które tymczasowo ustawia ComplicationData bazowej instancji tarczy zegarka podczas edycji. Jeśli komplikacje zmieniają się rzadko, jest to bardziej wydajne niż przekazywanie zastąpień za pomocą EditorSession#renderWatchFaceToBitmap. (I19384)

Poprawki błędów

  • Wcześniej funkcja selectComplicationDataForInstant wywoływała funkcję toApiComplicationData w przypadku wszystkich osi czasu, co oznaczało, że kolejny test równości === zawsze kończył się niepowodzeniem. Oznaczało to, że komplikacje były przeładowywane w każdej klatce, co powodowało rozładowywanie baterii. (717406)

Wersja 1.3.0-alpha02

3 kwietnia 2024 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha02 Wersja 1.3.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Do porównywania najlepszych i selectedData używamy teraz równości referencyjnej, ponieważ operator równości jest kosztowny. (446b00)

Zmiany w interfejsie API

  • Dodaliśmy dynamiczny interfejs API bez rezerwowej wartości domyślnej dla parametru GoalProgressComplicationData. (c33264)

Wersja 1.3.0-alpha01

7 lutego 2024 r.

Publikacja androidx.wear.watchface:watchface-*:1.3.0-alpha01 Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • WatchFaceServices można inicjować współbieżnie, dlatego powinny być bezstanowe. Aby to umożliwić, dodaliśmy StatefulWatchFaceService, w którym zdefiniowany przez użytkownika dodatkowy element utworzony przez createExtra() jest przekazywany do wszystkich zastąpień wywoływanych podczas inicjowania.
  • GlesRenderer2 ma teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów do wypróbowania po kolei za pomocą eglChooseConfig.

Zmiany w interfejsie API

  • StatefulWatchFaceService obsługuje teraz zastępowanie parametru getComplicationSlotInflationFactory, do którego przekazywana jest zdefiniowana przez użytkownika dodatkowa kreacja utworzona przez createExtra(). (I82d9f)
  • Niektóre tarcze zegarka muszą udostępniać dane pomocnicze utworzone podczas createUserStyleSchema innym metodom inicjowania. Ponieważ nie było lepszej alternatywy, programiści zwykle tworzyli komponenty WatchFaceServices z zachowywaniem stanu. Jest to niebezpieczne, ponieważ można utworzyć wiele instancji jednocześnie, co może prowadzić do błędów. Aby rozwiązać ten problem, wprowadziliśmy StatefulWatchFaceServiceStatefulWatchFaceRuntimeService, gdzie typ zdefiniowany przez użytkownika jest tworzony przez createExtra() i przekazywany do różnych metod tworzenia jako parametr. (If8a99)
  • Dodaliśmy getUserStyleFlavors do InteractiveWatchFaceClient, co jest interesujące przede wszystkim dla producentów OEM. (I0f5d8)
  • GlesRenderer2 ma teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów do wypróbowania po kolei za pomocą eglChooseConfig. Dzięki temu możesz na przykład najpierw wypróbować konfigurację z antyaliasingiem, a w razie potrzeby wrócić do konfiguracji bez niego. (I1ba74)
  • Od Androida U do WearOS zostanie dodana obsługa właściwości SystemDataSources.DATA_SOURCE_HEART_RATE. Ten element interfejsu obsługuje tylko SHORT_TEXT, ale zalecamy, aby ComplicationSlot akceptował też SMALL_IMAGE, ponieważ producenci OEM mogą zdecydować się na wyświetlanie skrótu do aplikacji o zdrowiu zamiast wartości na żywo. (I34223)
  • Dodaliśmy METADATA_KEY_CONFIG_RESTORE_SUPPORTED, które od Androida U kontroluje, co się dzieje, gdy system jest przywracany z kopii zapasowej w przypadku źródła danych widżetu z 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 wszystkich danych konfiguracyjnych, ale jeśli tak nie jest, może dodać ustawienie metadanych METADATA_KEY_DATA_SOURCE_CONFIG_ACTION o wartości false, co spowoduje oznaczenie gniazda widżetu jako niekonfigurowanego. (I6c505)

Wersja 1.2

Wersja 1.2.1

24 stycznia 2024 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.1 Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd powodujący awarię na zegarkach Samsung Galaxy Watch 4, 5 i 6. (43f0b0)

Wersja 1.2.0

29 listopada 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0 Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Dodaliśmy obsługę nowych typów komplikacji, które są dostępne w Androidzie T:
    • GoalProgressComplicationData, która jest podobna do funkcji RangedValueComplicationData, z tym że dotyczy postępu w realizacji celu, w którym minimalna wartość jest domyślnie równa zero, a wartość może być większa niż targetValue.
    • WeightedElementsComplicationData, który składa się z tablicy elementów (par wagi i koloru) oraz opcjonalnego tekstu, tytułu lub obrazu. Mogą one być wyświetlane jako wykres kołowy, na którym kolory muszą mieć znaczenie w danym kontekście, ponieważ w przypadku komplikacji zwykle nie ma miejsca na etykiety.
  • Dodaliśmy obsługę opcjonalnego parametru ColorRanges do parametru RangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasami ComplicationDataSource najlepiej nadaje się do ustawiania kolorów, np. gdy mają one określone znaczenie semantyczne. np. od czerwonego do niebieskiego w przypadku temperatury.
  • Prawie każdy typ ComplicationData obsługuje teraz SmallImages.
  • Dodaliśmy ComplicationDisplayPolicy, gdzie DO_NOT_SHOW_WHEN_DEVICE_LOCKED informuje zgodną tarczę zegarka, aby nie wyświetlała komplikacji, gdy urządzenie jest zablokowane.
  • Od Androida T producenci OEM będą mogli określić, czy żądanie elementu pochodzi z tarczy zegarka znajdującej się na liście zdefiniowanej przez metadane android.support.wearable.complications.SAFE_WATCH_FACES w manifeście dostawcy, za pomocą ComplicationRequest#isForSafeWatchFace. Aby otrzymywać inne wartości niż TargetWatchFaceSafety.UNKNOWN, dostawca musi mieć uprawnienie com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.
  • UserStyleFlavors stała się funkcją nieeksperymentalną.

Wersja 1.2.0-rc01

18 października 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-rc01 Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Wersja 1.2.0-beta02

6 września 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-beta02 Wersja 1.2.0-beta02 zawiera te zmiany.

Nowe funkcje

  • SuspendingComplicationDataSourceService#onDestroy jest teraz otwarty. Pamiętaj, że obsługa domyślnego systemowego widżetu pogodowego została usunięta.

Zmiany w interfejsie API

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

Wersja 1.2.0-beta01

23 sierpnia 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-beta01 Wersja 1.2.0-beta01 zawiera te zatwierdzenia.

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodaj domyślny systemowy element zastępczy dla widżetów pogodowych. (Ia0994)
  • Ta poprawka dodaje WatchFaceRuntimeService i WatchFaceControlClient.createWatchFaceRuntimeControlClient wraz z otoczkami Guava. Dodają one obsługę środowisk wykonawczych tarcz zegarka, które są specjalnym rodzajem tarczy zegarka, która wczytuje swoją definicję z innego pakietu. Obecnie WearOS obsługuje tylko środowisko wykonawcze formatu tarczy zegarka na Androida. (I2799f)
  • Ta poprawka jest kontynuacją zmiany aosp/2636578, w której zmieniliśmy nazwy definicji liczb całkowitych, aby nie trzeba było zmieniać żadnego kodu zależnego od WatchFaceType, CanvasType, TapType ani ComplicationsSlotBoundsType. (I4098b)
  • Zaktualizowano pliki interfejsu API, aby dodać adnotacje dotyczące wyłączenia zgodności. (I8e87a, b/287516207)
  • Ta poprawka udostępnia stałe WatchFaceTypeWatchFaceTypes, stałe CanvasTypeCanvasTypes, stałe TapTypeTapTypes i stałe ComplicationsSlotBoundsTypeComplicationsSlotBoundsType. (I3b85a, b/288750666)
  • WatchFace.OverlayStyle jest rzadko używana i nie jest dobrze obsługiwana przez producentów OEM, dlatego wycofujemy ją z zamiarem usunięcia w późniejszym terminie. (I7344a)

Wersja 1.2.0-alpha09

21 czerwca 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha09 Wersja 1.2.0-alpha09 zawiera te zmiany.

Nowe funkcje

  • RangedValueComplicationData.Builder obsługuje teraz DynamicFloat, a nowy DynamicComplicationText jest dostępny jako podklasa ComplicationText. Oba te elementy mogą korzystać z wyrażeń dynamicznych i powiązań z platformą, które są aktualizowane z częstotliwością 1 Hz na obsługiwanych urządzeniach z Wear 4.

Zmiany w interfejsie API

  • Dodano dynamiczne typy dla dziennego dystansu, dziennych kalorii i dziennej liczby pięter. Klucze do źródeł informacji o stanie platformy znajdują się teraz w sekcji PlatformHealthSources.Keys (Ib7637)
  • Zaimplementuj PlatformDataProvider, aby podawać tętno i dzienną liczbę kroków. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)
  • Zmieniliśmy nazwę interfejsu StateEntryValue na DynamicDataValue i zaktualizowaliśmy interfejsy API stanu, aby korzystały z interfejsu DynamicDataKey. (If1c01)
  • Dodaj AppDataKey, aby uzyskać dostęp do stanu wypychanego aplikacji; dodaj PlatformDataKey, aby uzyskać dostęp do danych platformy; dodaj obsługę przestrzeni nazw w StateStore. (I7985e)
  • Metody enable/disablePlatformSource zostały usunięte z usługi DynamicTypeEvaluator. Za aktualizacje powinien odpowiadać wywołujący. (I78c6d)
  • Zezwalaj na ograniczanie rozmiaru powiązanych typów danych. (Ie2966)

Wersja 1.2.0-alpha08

19 kwietnia 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha08 Wersja 1.2.0-alpha08 zawiera te zmiany.

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 typy na zaufanych i niezaufanych tarczach zegarka.

Zmiany w interfejsie API

  • Przekazywanie klasy @Deprecated do usługi (I882d1, b/271441831)
  • Zmieniono nazwę parametru wartości dla Enum.valueOf (Ia9b89)
  • Więcej wyjątków zgłaszanych przez enum valueOf (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 użytkownika renderWatchFaceToSurface do InteractiveWatchFaceClient, HeadlessWatchFaceClient i EditorSession. Zwykle jest to bardziej wydajne niż renderowanie do mapy bitowej. (Ieacad)
  • Nazwa ObservableStateStore została zmieniona na StateStore. (Ieb0e2)
  • Dodano DynamicTypeEvaluator.Builder zamiast argumentów konstruktora, aby umożliwić używanie większej liczby argumentów opcjonalnych, w tym ObservableStateStore, który domyślnie jest teraz pustym sklepem. (I6f832)
  • Zmieniono kolejność parametrów w funkcji DynamicTypeEvaluator. (Ic1ba4)
  • Do metod DynamicTypeEvaluator.bind dodano wykonawcę. (I346ab)
  • Dodaliśmy metodę startEvaluation do BoundDynamicType, aby wywoływać ocenę po powiązaniu typu dynamicznego. (I19908)
  • 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. (Id1c73)
  • Zmieniliśmy nazwę 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

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha07 Wersja 1.2.0-alpha07 zawiera te zmiany.

Nowe funkcje

  • Od Androida T producenci OEM będą mogli określić, czy żądanie elementu pochodzi z tarczy zegarka znajdującej się na liście zdefiniowanej przez metadane android.support.wearable.complications.SAFE_WATCH_FACES w manifeście dostawcy, za pomocą ComplicationRequest#isForSafeWatchFace. Aby otrzymywać inne dane niż TargetWatchFaceSafety.UNKNOWN, dostawca musi mieć uprawnienie com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.

  • Dostępna jest też pamięć Android TCustomValueUserStyleSetting2, która może pomieścić do 12,5 KB. Poprzedni limit dla CustomValueUserStyleSetting wynosił 1 KB. Mimo zwiększonych limitów rozmiaru deweloperzy tarcz zegarka są zachęcani do utrzymywania małych rozmiarów danych, ponieważ ustawienia są przesyłane przez Bluetooth podczas edycji, a przepustowość Bluetooth jest ograniczona.

Zmiany w interfejsie API

  • Do funkcji GlesRendererGlesRenderer2 dodaliśmy opcjonalny parametr eglContextAttribList, który umożliwia ustawienie wartości EGL14.EGL_CONTEXT_CLIENT_VERSION przekazywanej do funkcji EGL14.eglCreateContext. (I2a83e)
  • Przenieśliśmy biblioteki tarcz zegarka do androidx.core.util.Consumer zamiast java.util.function.Consumer. (I273f5)
  • Więcej wyjątków zgłaszanych przez funkcje dostępu do 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. (I24c89)
  • Zdecydowaliśmy, że isForSafeWatchFace powinno być trójstanowym IntDef. (Ief2f7)
  • W przypadku Androida T wprowadziliśmy ComplicationRequest.isForSafeWatchFace, który jest przeznaczony do użytku przez producentów OEM i wymaga com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. W przypadku źródeł danych w obrazie systemu ta funkcja zwraca wartość „prawda”, jeśli żądana tarcza zegarka znajduje się na liście bezpiecznych tarcz zegarka określonej przez źródło danych w jego manifeście. (I0cbb6)
  • W przypadku Androida T dodaliśmy CustomValueUserStyleSetting2, który może pomieścić do 12,5 KB. Poprzedni limit dla CustomValueUserStyleSetting wynosił 1 KB. (I0b100)

Wersja 1.2.0-alpha06

25 stycznia 2023 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha06 Wersja 1.2.0-alpha06 zawiera te zmiany.

Nowe funkcje

  • Pracujemy nad dodaniem obsługi powiązań platformy komplikacji. Nie jest ona jeszcze gotowa do użycia, ale staraj się być na bieżąco.
  • Dodaliśmy obsługę XMLComplicationSlot w przypadku nowych typów komplikacji: GOAL_PROGRESS i WEIGHTED_ELEMENTS.

Poprawki błędów

  • Rozwiązuje problem z wyciekiem pamięci, który powodował, że edytor tarczy zegarka nie był prawidłowo zwalniany na urządzeniach Samsunga. (3b5987)
  • Naprawiliśmy błąd polegający na tym, że czasami widżety nie wyświetlały się prawidłowo podczas przełączania się między tarczami zegarka z wieloma ulubionymi. (b38ece)
  • Naprawia błąd serializacji w przypadku perOptionScreenReaderNames, który powodował awarie tarczy zegarka. (e9f466)

Wersja 1.2.0-alpha05

7 grudnia 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha05 Wersja 1.2.0-alpha05 zawiera te zmiany.

Nowe funkcje

  • Jakiś czas temu dodaliśmy obsługę hierarchicznych UserStyleSettings, a od Androida T w hierarchii może być więcej niż jeden ComplicationSlotsUserStyleSetting. Aktywna będzie tylko jedna ComplicationSlotsUserStyleSetting, w zależności od wyborów stylu użytkownika.

  • Ulepszamy obsługę czytnika ekranu w przypadku elementów ListOptionComplicationSlotsOption, dodając pole screenReaderName. Uwaga: w przypadku Androida w wersji starszej niż T to pole będzie ignorowane przez edytory towarzyszące.

Zmiany w interfejsie API

  • Dodaliśmy nowe opcjonalne pole screenReaderName do ListOptionComplicationSlotsOption, które będzie używane przez edytorów. Edytory towarzyszące na urządzeniach z Androidem w wersji starszej niż T będą je ignorować. (I75326)
  • Od Androida T w hierarchii stylów jest obsługiwanych wiele elementów ComplicationSlotsUserStyleSettings, ale w danym momencie może być aktywny tylko jeden z nich. Dodaliśmy funkcję narzędziową findComplicationSlotsOptionForUserStyle do UserStyleSchema, aby ułatwić znajdowanie aktywnego ComplicationSlotsOption, jeśli taki istnieje. (Ic2b06)
  • RangedValuesTypes zostały przeniesione do obiektu towarzyszącego RangedValueComplicationData i zmieniono ich nazwy na TYPE_UNDEFINED, TYPE_RATING. Dodano też nowy element TYPE_PERCENTAGE. (I55d02)
  • Zmieniliśmy nazwę eksperymentalnego DynamicFloat na FloatExpression i oznaczyliśmy go jako @hide. (Idf4f1)
  • Dodawanie adnotacji @JvmDefaultWithCompatibility (I8f206)

Wersja 1.2.0-alpha04

9 listopada 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha04 Wersja 1.2.0-alpha04 zawiera te zmiany.

Nowe funkcje

  • W Androidzie T dodaliśmy obsługę 2 nowych typów elementów, GoalProgressComplicationDataWeightedElementsComplicationData.
  • GoalProgressComplicationData jest podobny do RangedValueComplicationData, ale jego wartość może przekraczać wartość docelową (w przypadku RangedValueComplicationData wartość jest ograniczona do zakresu [min .. max]), co ma wpływ na projekt wizualny, który może nie pasować do wszystkich tarcz zegarka.
  • GoalProgressComplicationData dodaje obsługę wykresów kołowych i podobnych podziałów prostych danych.
  • Dodaliśmy opcjonalną obsługę właściwości ColorRamps do znacznika RangedValueComplicationData.
  • W przypadku Androida T dodaliśmy do ComplicationData elementy ComplicationPersistencePolicysetCachePolicy, które obecnie umożliwiają dostawcy określenie, czy element ma być zachowywany (tzn. czy ma być przechowywany w pamięci podręcznej po ponownym uruchomieniu). Większość widżetów nie musi ustawiać kontroli pamięci podręcznej, ale może to rozwiązać problemy z nieaktualnymi danymi w przypadku niektórych widżetów, które są często aktualizowane (np. widżetów z danymi o zdrowiu). Dodaliśmy też ComplicationDisplayPolicy, gdzie DO_NOT_SHOW_WHEN_DEVICE_LOCKED informuje zgodną tarczę zegarka, aby nie wyświetlała widżetu, gdy urządzenie jest zablokowane. (Ic9574)

Zmiany w interfejsie API

  • GoalProgressComplicationData, WeightedElementsComplicationData i ColorRamp nie są już eksperymentalne. (Ica9e2)
  • Interfejsy ComplicationPersistencePolicyComplicationDisplayPolicy są teraz prawidłowo oznaczone jako interfejsy API T. (I31d88)
  • Wycofany konstruktor ComplicationSlotOverlay ma teraz DeprecationLevel.WARNING, co umożliwia ponowne wywoływanie go z javy. (Ib308c)
  • Rozwiązaliśmy problemy ze zgodnością z Java w przypadku ComplicationRequestListener, CanvasComplication, ComplicationTapFilterInteractiveWatchFaceClient, dodając do nich adnotacje @JvmDefaultWithCompatibility (Id94fc).
  • Usunęliśmy eksperymentalne funkcje ProtoLayoutComplicationDataListComplicationData. W przypadku tych funkcji nie było jasne, jak mogą z nich korzystać deweloperzy. Mamy nadzieję, że w przyszłości uda nam się to zmienić. (I9df05)
  • Dodaliśmy ponownie ValueType do RangedValueComplicationData. WeightedElementsComplicationData obsługuje teraz kolor tła. Usunęliśmy DiscreteRangedValueComplicationData, ponieważ jego funkcje są podzbiorem funkcji WeightedElementsComplicationData. (I6446c)

Poprawki błędów

  • Uwzględnij znak isForScreenShot w znaku równości i kodzie skrótu. Upewnij się, że onRenderParametersChanged ma prawidłową wartość isForScreenshot (I04a41).
  • Usunięto wycieki WatchFaceControlService z klientów bez interfejsu. (e90e00)

Wersja 1.2.0-alpha03

5 października 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha03 Wersja 1.2.0-alpha03 zawiera te zmiany.

Nowe funkcje

  • Nie ma nowych funkcji, ale naprawiliśmy kilka błędów edytora tarcz zegarka.

Zmiany w interfejsie API

  • Wycofanie UserStyleSchema.userStyleSettings, ponieważ rootUserStyleSettings nie jest już eksperymentalne (Ie96e3)
  • Przeniesiono rootUserStyleSettings z eksperymentu (I8d6b3)
  • Oznaczyliśmy WatchFaceColors jako eksperymentalne, ponieważ nie jest obsługiwane przez wszystkie systemy (I6d75d).
  • Udostępnij DisconnectReasons w publicznym interfejsie API, aby działał z IntDef. (I791f8)

Poprawki błędów

  • Zamknij dowolny otwarty edytor na zegarku, jeśli SysUI się wyłączy. Jeśli SysUI przestanie działać, a edytor tarczy zegarka nie zamknie się, tarcza może pozostać w niespójnym stanie, ponieważ system polega na SysUI w zakresie utrwalania zmian stylu wprowadzonych przez użytkownika.(ba762a
  • Naprawiono wyciek pamięci w ComplicationDataSourceInfoRetriever, gdzie kontynuacja korutyny Kotlin działała jako element główny odzyskiwania pamięci i zachowywała aktywność edytora.(33ee06)

Wersja 1.2.0-alpha02

21 września 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha02 Wersja 1.2.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Niektóre tarcze mają konfigurację poza UserStyle, która wpływa na ich wygląd (np. wybór zdjęcia w tle). Dodaliśmy Renderer.sendPreviewImageNeedsUpdateRequest, które umożliwia tarczy zegarka wysłanie prośby o zaktualizowany obraz podglądu. Pamiętaj, że do działania tej funkcji wymagana jest odpowiednia aktualizacja systemu.

  • Dodaliśmy też interfejs API tarcz zegarka, który udostępnia ich kolory systemowi, który może na tej podstawie wybrać paletę kolorów. Uwaga: w kolejnej poprawce ta funkcja została oznaczona jako eksperymentalna.

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

Zmiany w interfejsie API

  • Menedżer tapet może czasami odłączyć się od silnika i utworzyć inny. Dodaliśmy DisconnectReason int def i rozszerzyliśmy ClientDisconnectListener o nową metodę, która zawiera DisconnectReason, co pozwala słuchaczowi obserwować odłączenie silnika. (I45cce)
  • Dodano 2 parametry opcjonalne nameResourceIdscreenReaderResourceId do konstruktora ComplicationSlotOverlay (I157e8)
  • Dodaliśmy otoczkę Guava dla nowego przeciążenia funkcji getOrCreateInteractiveWatchFaceClient z parametrem PreviewImageUpdateRequestedListener. (Ic31f0)
  • Dodaliśmy element Renderer.sendPreviewImageNeedsUpdateRequest, który jest przydatny w przypadku tarcz zegarka, których stan wykracza poza element UserStyleSchema i wpływa na ich wygląd (np. tarcza zegarka z wybieralnym obrazem tła). Po stronie klienta dodaliśmy PreviewImageUpdateRequestedListener jako parametr opcjonalny do getOrCreateInteractiveWatchFaceClient, aby obserwować te żądania. (Iff44a)
  • Uprościliśmy interfejs API do udostępniania WatchFaceColors. W obiekcie Renderer znajduje się teraz prosta właściwość o nazwie watchFaceColors, którą tarcza zegarka może ustawić. 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 otwarte metody watchfaceColorsnotifyWatchFaceColorsChanged w klasie Renderer. Umożliwiają one systemowi uzyskanie kolorów tarczy zegarka za pomocą metody WallpaperManager.getWallpaperColors. (I3d611)
  • ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData (oraz eksperymentalne DiscreteRangedValueComplicationData, GoalProgressComplicationData i WeightedElementsComplicationData) obsługują teraz SmallImages. Jeśli tarcza zegarka renderuje komplikację w wielu kolorach, może teraz używać wielokolorowego SmallImage, podczas gdy wcześniej musiała używać obrazu monochromatycznego. (I257df)
  • Zmień typ PreviewImageUpdateRequestedListener na Consumer<> (Ia875d)
  • Zastąp niestandardowy typ SAM OnWatchfaceColorsListener ogólnym typem SAM w Javie (Consumer) (I0c489)
  • Wycofaliśmy stare metody getOrCreateInteractiveWatchFaceClientlistenableGetOrCreateInteractiveWatchFaceClient, które nie określają PreviewImageUpdateRequestedListener. (Iec502)

Poprawki błędów

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

Wersja 1.2.0-alpha01

10 sierpnia 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.2.0-alpha01 Wersja 1.2.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy eksperymentalną obsługę różnych nowych formatów komplikacji. To obszar, w którym aktywnie rozwijamy nowe funkcje. Te nowe formaty mogą ulec zmianie bez powiadomienia, a obecnie nie są obsługiwane przez renderery CanvasComplicationDrawable.
  • Dodaliśmy też opcjonalne marginesy do miejsc na widżety, które ułatwiają klikanie małych widżetów.

Zmiany w interfejsie API

  • Klasy eksperymentalnej BoundingArc nie można już zmieniać. (If624a)
  • Małe widżety mogą być trudne do kliknięcia. Aby temu zapobiec, wprowadziliśmy obsługę marginesów, które zwiększają obszar klikalny bez wpływu na renderowanie. O ile nie określono inaczej (w kodzie lub w XML), elementy ComplciationSlots mają marginesy o zerowej wielkości. (I14089)
  • Zmieniono sygnaturę getComplicationSlotInflationFactory(CurrentUserStyleRepository), aby zwracała niepustą instancję fabryczną. Wcześniejsze zwracanie wartości null było błędem, więc po prostu doprecyzowujemy umowę dotyczącą interfejsu API. (I0fcc0)
  • Dodaliśmy argument currentUserStyleRepository do metody WatchFaceService.getComplicationSlotInflationFactory, aby zachować spójność z metodą createComplicationSlotsManager. (I2ddd2)
  • UserStyleFlavors nie są już funkcjami eksperymentalnymi. (I69cdc)
  • Usunęliśmy eksperymentalny symbol ValueTypeRangedValueComplicationData i zamiast niego wprowadziliśmy eksperymentalny symbol DiscreteRangedValueComplicationData, który jest podobny do RangedValueComplicationData, z wyjątkiem zakresu i wartości liczb całkowitych. Wprowadziliśmy też eksperymentalną funkcję GoalProgressComplicationData, która jest podobna do funkcji RangedValueComplicationData, ale służy do śledzenia postępów w realizacji celu, w którym wartość minimalna jest domyślnie równa zero, a wartość może być większa niż targetValue. Uwaga: w przypadku wszystkich wariantów RangedValue należy podać co najmniej jeden z tych elementów: monochromeImage, text lub title. (I9590c)
  • Usunęliśmy boundsWithMarginsComplicationSlotState, ponieważ oprogramowanie systemowe nie ma dla niego zastosowania. (I42e26)
  • Dodaliśmy eksperymentalną obsługę WeightedElementsComplicationData, która składa się z tablicy elementów (par wagi i koloru) oraz opcjonalnego tekstu, tytułu lub obrazu. Mogą one być wyświetlane jako wykres kołowy, na którym kolory muszą być znaczące w danym kontekście, ponieważ na komplikacji zwykle nie ma miejsca na etykiety. (I87eea)
  • Eksperymentalne funkcje ColorRamps opcjonalnie używane przez RangedValueComplicationData i GoalProgressComplicationData umożliwiają teraz określenie sekwencji maksymalnie 7 kolorów oraz flagi wskazującej, czy kolory mają być płynnie przechodzić jeden w drugi, czy też mają być renderowane jako równe, jednolite kroki kolorów. (I9f5bf)
  • RangedValueComplicationData.drawSegmented zostało zmienione na valueType, czyli liczbę całkowitą z odpowiednim parametrem ValueType IntDef, który nadaje znaczenie semantyczne wartości z zakresu i może być używany przez moduł renderujący komplikacje do wpływania na styl. (I0616b)
  • Dodaliśmy eksperymentalną obsługę opcjonalnego znaku ColorRanges do RangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasami ComplicationDataSource najlepiej nadaje się do ustawiania kolorów, np. gdy mają one określone znaczenie semantyczne. np. od czerwonego do niebieskiego w przypadku temperatury. (I5153a)
  • Dodaliśmy eksperymentalną wskazówkę drawSegmented do RangedValueComplicationData. Sygnalizuje to programom renderującym, aby rysowały wskaźnik wartości zakresu z segmentami, gdzie 1 segment = 1 jednostka. (I7d7c1)

Poprawki błędów

  • Dodaliśmy możliwość definiowania ComplicationSlotBounds względem wstępnie zdefiniowanego układu współrzędnych ekranu. (I0985d)

Wersja 1.1

Wersja 1.1.1

10 sierpnia 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.1 Wersja 1.1.1 zawiera te zatwierdzenia.

  • Jest to wersja z poprawkami błędów, dlatego użytkownikom wersji 1.1.0 zdecydowanie zalecamy aktualizację.

Poprawki błędów

  • Inicjowanie tarczy zegarka jest asynchroniczne. Jeśli widżet zostanie odebrany, zanim tarcza zegarka będzie gotowa, zostanie umieszczony na liście pendingInitialComplications i zastosowany później. Niestety pendingInitialComplications zostało zastosowane zbyt wcześnie, co oznaczało, że podczas inicjowania tarczy zegarka istniał okres, w którym widżety były nadal umieszczane na pendingInitialComplications i ignorowane. Problem został już rozwiązany. Dodatkowo ta poprawka usuwa błąd, w którym ComplicationRenderer nieprawidłowo próbował wczytywać symbole zastępcze asynchronicznie, co powodowało niepowodzenie i brak aktualizacji grafiki kompilacji. Ta poprawka usuwa też teoretyczny błąd, w którym trzeba było scalić wiele pendingInitialComplications. (0d03ba3)

  • Naprawiono potencjalny zakleszczenie w InteractiveInstanceManager, w którym getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance blokował dłużej niż było to konieczne. Zwykle oczekujemy, że engine.setUserStyle będzie szybkie, ale jeśli z jakiegoś powodu tak nie jest, może dojść do zakleszczenia lub błędu ANR. Ta poprawka przenosi niepotrzebne działania poza blokadę, eliminując możliwość zakleszczenia.(5a2adca)

  • Rozwiązaliśmy kilka problemów, które zachowywały WatchFaceService. Czasami blokada WakeLock może zachować wartość WatchFaceService. Rozwiązaniem jest wywołanie funkcji release(). StateFlows może też zachować WatchFaceService, a anulowanie bazowego CoroutineScopes rozwiązuje ten problem.(fd48138)

  • Dodano limity czasu do awaitDeferredWatchFace* i poprawiono watchfaceOverlayStyle NullPointerException. W normalnych warunkach nie powinno to powodować przekroczenia limitu czasu, w tym po świeżej instalacji i w scenariuszach DirectBoot, w których obciążenie procesora jest wysokie. Naprawiliśmy też błąd NullPointerException, który występował, gdy funkcja getWatchfaceOverlayStyle była wywoływana po funkcji close().(a4c3a5a)

Wersja 1.1.0

15 czerwca 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.0 Wersja 1.1.0 zawiera te zmiany.

Ważne zmiany od wersji 1.0.0

Ulepszona edycja:

  • Dodaliśmy obsługę schematów hierarchicznych, która umożliwia interfejsom edytora zapisywanie hierarchii stylów. Możesz teraz określać osobne ikony do użycia w edytorach tarczy zegarka i aplikacji towarzyszącej.
  • Istnieje możliwość włączenia obsługi wielu instancji tarczy zegarka. Każda instancja ma unikalny identyfikator dostępny we wszystkich interfejsach API.
  • Możesz teraz określać zrozumiałe dla człowieka nazwy ComplicationSlots do użycia w edytorach.
  • Eksperymentalna obsługa „smaków” stylów, czyli wyselekcjonowanych stylów, które będą widoczne w edytorze towarzyszącym.
  • Podczas edytowania dwóch instancji tarczy zegarka są one wczytywane, dzięki czemu mogą udostępniać zasoby, co pozwala oszczędzać pamięć.
  • Podczas wybierania widżetu w edytorze tarcz zegarka bieżący dostawca jest teraz wstępnie wybierany.

Ulepszone widżety:

  • Możesz teraz określić ComplicationType dla podstawowych i dodatkowych źródeł danych, co zapewnia programistom większą elastyczność w zakresie gotowych funkcji.
  • Dodaliśmy ComplicationDataTimeline, który dostarcza sekwencję danych ograniczonych czasowo do tarczy zegarka, które można buforować i automatycznie aktualizować. Na przykład prognoza pogody na dziś o różnych porach lub kilka nadchodzących wydarzeń z kalendarza.
  • ComponentName dostawcy widżetu jest częścią ComplicationData.
  • Widżety są teraz buforowane, co zapewnia większy komfort podczas przełączania między tarczami zegarka.

Inne zmiany:

  • Wartości UserStyleSchemaComplicationSlots można teraz zdefiniować w XML. Upraszcza to tworzenie tarcz zegarka i umożliwia szybsze wysyłanie zapytań o metadane z systemu.
  • Tarcze zegarka mogą teraz wpływać na kolory używane do renderowania nakładki systemowej.

Wersja 1.1.0-rc01

18 maja 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.0-rc01 Wersja 1.1.0-rc01 zawiera te zmiany.

Nowe funkcje

  • Wprowadziliśmy pewne zmiany w obsłudze plików XML tarcz zegarka, które ułatwiają określanie ComplicationSlotBounds i obsługują odwołania. Eksperymentowanie z komplikacją na krawędzi BoundingArc jest kontynuowane, a jej działanie jest sprawdzane w drawHighlight, chociaż nie zaleca się jej używania w tym czasie.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalne przeciążenie funkcji drawHighlight, które akceptuje parametr BoundingArc. (I705f8)
  • Plik XML tarczy zegarka obsługuje teraz odwołania do zasobów. Umożliwia używanie tych samych stałych w XML-u i kodzie. (I3ef61)
  • Dodaliśmy możliwość definiowania ComplicationSlotBounds w formie center_x, center_y, size_x, size_y. Teraz można też używać różnych jednostek (np. dp) za pomocą odwołań do zasobów. (Iace98)

Poprawki błędów

  • Naprawiono błąd runBlockingWithTracing, który wykonywał zadania w niewłaściwym kontekście.(4f595fe)
  • Ustaw BaseEditorSession.close jako synchroniczne. Problem z asynchronicznym działaniem funkcji BaseEditorSession.close polega na tym, że zwalniamy ComplicationDataSourceInfoRetriever zbyt późno, co powoduje spamowanie ostrzeżeniami w logcat. Prawdopodobnie nie było to szkodliwe, ale spam w logcat jest rozpraszający i należy go unikać.(35a5308)

Wersja 1.1.0-beta02

11 maja 2022 roku

Publikacja androidx.wear.watchface:watchface-*:1.1.0-beta02 Wersja 1.1.0-beta02 zawiera te zmiany.

Nowe funkcje

  • Dodaliśmy eksperymentalną obsługę nowych ComplicationData. Nie są one jeszcze gotowe do użycia, ale będziemy Cię informować o postępach.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalną klasę BoundingArc, która opisuje geometrię gniazda komplikacji na krawędzi. Zostało to dodane do ComplicationSlot i przekazane do ComplicationSlotStateWatchFaceMetadataClient. (I61a40)
  • Dodaliśmy możliwość dziedziczenia ustawień w pliku UserStyleSetting XML. Umożliwia to ograniczenie liczby słów i udostępnianie ustawień między tarczami zegarka. (Ief841)
  • Dodaliśmy 2 nowe eksperymentalne typy ComplicationData: ListComplicationDataProtoLayoutComplicationData. Obecnie nie ma obsługi renderowania żadnego z tych typów, a WearOS nie rozpoznaje ich, jeśli zostaną dodane do pliku manifestu ComplicationDataSource's. (I1811c)

Poprawki błędów

  • Naprawiono serializację typu TimeLineEntry. Nie serializowaliśmy typu TimeLineEntry, co oznaczało, że buforowane obiekty TimeLineEntries typu NoData były błędnie interpretowane jako mające typ komplikacji nadrzędnej, co prowadziło do błędów NPE, gdy uzyskiwano dostęp do nieistniejących wymaganych pól. (55ffdf5)
  • Usunięto błąd, w którym setComplicationData usuwało pola osi czasu(fb392f5).
  • Naprawiono błąd, który bardzo rzadko powodował, że znak runBlockingWithTracing prowadził do błędu NPE(12ca62e).
  • Naprawiliśmy błąd, który czasami powodował wyświetlanie komunikatu ClassNotFoundException: android.support.wearable.complications.ComplicationText podczas odbierania komplikacji.(217942d9)
  • Usuwa błąd w GlesRenderer.backgroundThreadInitInternal, który powodował, że funkcja onBackgroundThreadGlContextCreated była wywoływana tylko wtedy, gdy wywoływana była funkcja EGL14.eglCreateContext. Usunęliśmy kolejny błąd, który powodował wizualne zakłócenia na zrzucie ekranu wywołane przez verticalFlip.(c674ad2)
  • Poprawiono sprawdzanie wersji XML w WatchFaceService, która była wczytywana z nieprawidłowego pakietu.(dfa06f3)
  • Format przewodowy elementu zastępczego korzysta teraz z wewnętrznego pakietu. Nie chcemy, aby symbole zastępcze powodowały nieprawidłowe działanie istniejących tarcz zegarka, które mogą korzystać z ukrytych wewnętrznych danych a.s.w.c.ComplicationData. Wcześniej format przesyłania danych NoDataComplication przechowywał symbol zastępczy w zwykłych polach (było to problematyczne, ponieważ stare tarcze zegarka renderowały ciąg znaków symbolu zastępczego, co nie było zamierzone). Teraz używamy wewnętrznego pakietu, aby w pełni odizolować ten symbol.(d5e7bd2)

Wersja 1.1.0-beta01

20 kwietnia 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.0-beta01 Wersja 1.1.0-beta01 zawiera te zmiany.

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1.0-alpha05

6 kwietnia 2022 roku

Publikacja androidx.wear.watchface:watchface-*:1.1.0-alpha05 Wersja 1.1.0-alpha05 zawiera te zatwierdzenia.

Nowe funkcje

  • Możesz teraz sprawdzić, które źródło danych wysłało ComplicationData, sprawdzając ComplicationData.dataSource. Niektóre tarcze zegarka mogą używać tej informacji do dostosowywania wyświetlania widżetów. (I44a73)

Zmiany w interfejsie API

  • Funkcje Renderer.CanvasRendererRenderer.GlesRenderer zostały wycofane na rzecz funkcji Renderer.CanvasRenderer2Renderer.GlesRenderer2, które obsługują SharedAssets przekazywane do metod renderowania. W przypadku współdziałania z kodem w języku Java wprowadziliśmy funkcje ListenableCanvasRenderer2ListenableGlesRenderer2. (I31ffa)
  • Dodano @WatchFaceFlavorsExperimental możliwość definiowania wersji – wstępnie skonfigurowana lista stylizowanych tarcz zegarka (I04dd0)
  • Renderer.sharedAssets to teraz StateFlow. Usunęliśmy nieużywaną funkcję Renderer.SharedAssetsFactory (I12ac5).
  • Środowisko wykonawcze UserStyleSchema.userStyleSettings nie jest już wycofane (Iba7e3)
  • Dodaliśmy HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, co pozwala HeadlessWatchFaceClient uniknąć stosunkowo niskiego narzutu związanego z przekazywaniem schematu przez AIDL przed obliczeniem skrótu. (I33597)
  • Dodaliśmy isUserStyleSchemaStatic do WatchFaceMetadataClient, co jest prawdą tylko wtedy, gdy UserStyleSchema nie może się zmienić, chyba że zostanie zaktualizowany pakiet APK tarczy zegara. (I45a3f)
  • Dodaliśmy getDigestHash do UserStyleSchema, który oblicza skrót schematu. Można go użyć do skutecznego określenia, czy UserStyleSchema uległ zmianie. (I2063d)
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED zmieniono nazwę na METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • UserStyleSetting.OnWatchEditorData została zmieniona na UserStyleSetting.WatchFaceEditorData i zawiera dane, które są używane wyłącznie przez edytor tarczy zegarka. (If3afb)

Wersja 1.1.0-alpha04

9 marca 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.0-alpha04 Wersja 1.1.0-alpha04 zawiera te zmiany.

Zmiany w interfejsie API

  • Aktualne ComplicationData mogą nie zawsze być dostępne (np. wygasłe dane ComplicationData w pamięci podręcznej), dlatego rozszerzyliśmy NoDataComplication o opcjonalne dane ComplicationData obiektu zastępczego i dodaliśmy ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER, których można używać tylko w kontekście obiektu zastępczego NoDataComplicationData. Jeśli ta opcja jest zaznaczona, te symbole zastępcze powinny być renderowane w postaci szarych pól lub łuków. (I6285d)
  • Dodaliśmy ComplicationData.getNextChangeInstant, który informuje o kolejnym momencie po momencie odniesienia, w którym może się zmienić dowolne pole komplikacji. Jest używany wewnętrznie do planowania klatek na potrzeby aktualizacji widżetów. Jeśli na przykład tarcza zegarka jest zwykle aktualizowana raz na minutę, ustawienie komplikacji stopera spowoduje, że będzie się aktualizować raz na sekundę. (I7ceb2)
  • EditorSession.watchFaceId można teraz używać na wszystkich poziomach interfejsu API. Jego wartość będzie teraz zawsze zgodna z wartością atrybutu WatchState.watchFaceInstanceId. (I323b9)
  • Interfejs API getPendingIntentForTouchEvent nie jest już potrzebny, ponieważ problem został rozwiązany w ramach platformy. Dlatego wszystkie powiązane interfejsy API zostały usunięte. Tarcze zegarka nie muszą wykonywać żadnych specjalnych czynności, aby wywołać PendingIntents, nawet jeśli niedawno naciśnięto przycisk ekranu głównego. (I1f2e8)
  • Dodaliśmy wartość RendererParameters.isForScreenShot, która będzie prawdziwa, jeśli renderowanie dotyczy zrzutu ekranu. Niektóre tarcze zegarka z animacjami muszą znać tę informację, aby wprowadzać korekty i zapewniać jak najlepsze wyniki. (I96d99)
  • Dodaliśmy WatchFaceExceptionReason do WatchFaceException, aby przedstawić kontekst problemu. (I01d15)
  • ComplicationDataSourceService.onImmediateComplicationRequest został usunięty, a zamiast niego dodano ComplicationRequest.immediateResponseRequired, aby wskazać, że dostawca musi szybko odpowiedzieć (najlepiej w czasie krótszym niż 100 ms). Pamiętaj, że ta funkcja jest chroniona przez uprawnienie com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE. (Ie6b23)
  • Zaktualizowano możliwość przyjmowania wartości null w bibliotekach core i appcompat, aby była zgodna z wersją DP2 Tiramisu (I0cbb7).

Poprawki błędów

  • Aplikacja tarczy zegarka ulega awarii z wyjątkiem, jeśli weryfikacja schematu zakończy się niepowodzeniem (Ia400f).

Wersja 1.1.0-alpha03

9 lutego 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.0-alpha03 Wersja 1.1.0-alpha03 zawiera te zmiany.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalną obsługę hierarchicznych schematów stylów. Dodaliśmy do androidx.wear.watchface.style.UserStyleSetting.Option nową właściwość childSettings, która jest początkowo używana tylko przez ListOption. Pozwala to opisać hierarchię stylów do użytku w interfejsach edytora. Podstawowy UserStyle pozostaje bez zmian i nadal jest Map<String, ByteArray>. (Iaf6f4)
  • Dodaliśmy WatchFace.OverlayStyle, który umożliwia tarczy zegarka skonfigurowanie renderowania nakładki stanu systemu. (I8520d)
  • Wprowadziliśmy clearWithBackgroundTintBeforeRenderingHighlightLayer nowy opcjonalny parametr konstruktora dla CanvasRenderer (domyślnie ma wartość false). Jeśli ustawisz go na true, obszar roboczy zostanie wyczyszczony kolorem tła. (Ie01e5)
  • Dodano klucz metadanych androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED, który umożliwia źródłom danych komplikacji wskazywanie, że mogą one podać wartość domyślną bez żadnej konfiguracji (Icc0d4).
  • Podczas edytowania tarczy zegarka często występuje zarówno instancja interaktywna, jak i bez interfejsu. Aby oszczędzać pamięć, wprowadziliśmy Renderer.SharedAssets, które umożliwia modułowi renderującemu tarczę zegara udostępnianie niezmiennych danych (np. tekstur i shaderów) między instancjami. GlesRenderer.setEglConfigGlesRenderer.setEglDisplay są wycofane. Nigdy nie miały być ustawiane, a gdyby tak było, prowadziłoby to do nieokreślonego zachowania. (I0d9e7)
  • Dodaliśmy do ComplicationSlot.Builder elementy setNameResourceIdsetScreenReaderNameResourceId (które odwołują się do zasobów ciągów tekstowych) oraz odpowiednie metody pobierania w androidx.wear.watchface.client.ComplicationSlotState. Umożliwia to systemowi pobieranie nazw elementów ComplicationSlot do użycia w edytorach i czytnikach ekranu. (If6c6a)
  • Funkcje WatchfaceMetadataClient.getUserStyleSchemagetComplicationSlotMetadataMap zgłaszają teraz wyjątek WatchFaceException zamiast RemoteException. (I86f11)
  • onSynchronousComplicationRequest i powiązane funkcje w ComplicationDataSourceService zostały zmienione na onImmediateComplicationRequest itp. (I87ba0)
  • Edytory tarcz zegarka mają znacznie mniej miejsca na ekranie niż edytory towarzyszące, dlatego warto obsługiwać w nich różne ikony. Ten patch dodaje element OnWatchEditorData (obecnie zawierający tylko ikonę) do wszystkich ustawień UserStyleSettings i w odpowiednich przypadkach do klas Option. (If1886)
  • Dodaliśmy @JvmOverloads do konstruktora ListenableGlesRenderer, aby zapewnić lepszą interoperacyjność z Javą. (I2974a)

Poprawki błędów

  • Konstruktor klasy ListenableGlesRenderer jest teraz prawidłowo oznaczony jako @Throws(GlesException::class) i można go rozszerzać w języku Java. (Iac6d0)
  • Poprawiono błąd polegający na nieprawidłowej obsłudze działania PhotoImageComplicationData tapAction (I1cc30)

Wersja 1.1.0-alpha02

12 stycznia 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.1.0-alpha02 Wersja 1.1.0-alpha02 zawiera te zmiany.

Nowe funkcje

  • Aby ułatwić debugowanie i testowanie, klasy ComplicationData i powiązane podklasy mają teraz zastąpione metody hashcode, equals i toString, co ułatwia pracę z nimi.

Zmiany w interfejsie API

  • WatchfaceMetadataClient ponownie zgłaszają RemoteExceptions w odpowiednich przypadkach, co ułatwia kodowi klienta wykrywanie błędów z tarczy zegarka. (I78785)
  • Klasy ComplicationData i podklasy mają teraz funkcje hashcode, equals i toString. (I24bc6)

Wersja 1.1.0-alpha01

15 grudnia 2021 roku

Publikacja androidx.wear.watchface:watchface-*:1.1.0-alpha01 Wersja 1.1.0-alpha01 zawiera te zmiany.

Nowe funkcje

  • Wartości UserStyleSchemaComplicationSlots można teraz zdefiniować w XML. Ułatwia to tworzenie tarcz zegarka. Poza tym zapytania WatchFaceMetadataClient są szybsze, ponieważ nie wymagają powiązania z usługą w celu uzyskania metadanych. Funkcje WatchFaceMetadataClientListenableWatchFaceMetadataClient nie są już eksperymentalne i staną się częścią stabilnego interfejsu API. System będzie mógł opcjonalnie obsługiwać wiele instancji tarczy zegarka, z których każda będzie miała inne opcje stylu zdefiniowane przez użytkownika. Będą one widoczne w selektorze tarcz zegarka. Aby włączyć tę funkcję, tarcza zegarka musi zawierać w pliku manifestu ten tag metadanych:

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • Niektóre tarcze zegarka mają stan, który nie jest rejestrowany w UserStyle. Aby obsługiwać ten stan i wiele instancji, identyfikator instancji tarczy zegarka jest teraz dostępny w WatchState.watchFaceInstanceId.

  • ComplicationData jest teraz buforowany, aby komplikacje mogły być wyświetlane natychmiast po wczytaniu. Czasami ComplicationData jest buforowany w pamięci przez system, a czasami serializowany przez biblioteki tarcz zegarka. Po serializacji powiązane działanie tapAction zostanie utracone.W takim przypadku ComplicationData.tapActionLostDueToSerialization zwróci wartość true, a tarcza zegarka powinna renderować komplikację w inny sposób (np. w odcieniach szarości lub półprzezroczystą), aby zasygnalizować, że nie można jej kliknąć. System jak najszybciej wyśle zaktualizowane ComplicationDatatapAction.

  • Niektóre ComplicationData nie powinny być przechowywane w pamięci podręcznej przez długi czas. Aby to umożliwić, dodaliśmy bardziej ogólną funkcję ComplicationDataTimeline. Można jej używać do dostarczania sekwencji ComplicationData z ograniczeniem czasowym na tarczę zegarka, które można buforować i automatycznie aktualizować. Na przykład prognoza pogody na dziś o różnych porach lub kilka nadchodzących wydarzeń z kalendarza. ComplicationRequestListener został rozszerzony o nową metodę onComplicationDataTimeline, której możesz użyć do zwracania tych danych.

  • DefaultComplicationDataSourcePolicy został rozszerzony, dzięki czemu możesz określić ComplicationType dla podstawowego i dodatkowego źródła danych.

  • Dodaliśmy obsługę synchronicznych dostawców widżetów, w przypadku których widżet jest aktualizowany z większą częstotliwością niż zwykle, nawet raz na sekundę, gdy tarcza zegarka jest widoczna i nie jest w trybie otoczenia. Uwaga: synchroniczni dostawcy komplikacji mogą mieć ograniczone zastosowanie ze względu na obawy związane z obciążeniem pamięci.

  • Zmiany PendingIntentTapListener prawdopodobnie zostaną cofnięte, ponieważ rozwiązaliśmy podstawowy problem (niemożność uruchamiania aktywności przez tarczę zegarka przez 5 sekund po naciśnięciu przycisku głównego) w ramach platformy.

Zmiany w interfejsie API

  • ComplicationData.isCached zmieniono na tapActionLostDueToSerialization, co jest bardziej przydatne przy określaniu, czy gniazdo komplikacji powinno być renderowane w inny sposób, aby zasygnalizować, że nie można go kliknąć. (I6de2f)
  • Dodano ComplicationDataTimeline do wear-complication-data-source. Można jej używać do dostarczania sekwencji ComplicationData z ograniczeniem czasowym na tarczę zegarka, które można buforować i automatycznie aktualizować. Na przykład prognoza pogody na dziś o różnych porach lub kilka nadchodzących wydarzeń z kalendarza. ComplicationRequestListener został rozszerzony o nową metodę onComplicationDataTimeline, której możesz użyć do zwracania tych danych. Wprowadziliśmy nowy wrapper Kotlin SuspendingTimelineComplicationDataSourceService do zawieszania usług źródła danych. (Idecdc)
  • Dodano: PendingIntentTapListenerWatchFaceControlClient.getPendingIntentForTouchEvent. Może to pomóc tarczom zegarka, które muszą uruchamiać intencje w odpowiedzi na dotknięcia, w obejściu problemu, w którym platforma blokuje uruchamianie nowych aktywności przez 5 sekund po naciśnięciu przycisku ekranu głównego. (I98074)
  • Wprowadziliśmy pamięć podręczną ComplicationData dla każdej tarczy zegarka. Ma to na celu umożliwienie wyświetlania na tarczy zegarka ostatnich znanych wartości danych komplikacji po załadowaniu, dopóki system nie zaktualizuje tych wartości. 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 zaleca się, aby buforowane komplikacje były renderowane inaczej, ponieważ tapAction nie można buforować i w buforowanej komplikacji będzie null. (I404b0)
  • Identyfikator instancji tarczy zegara jest teraz dostępny w WatchState.watchFaceInstanceId. Większość tarcz zegarka nie będzie musiała z tego korzystać, ale jeśli stan tarczy zegarka nie jest przechowywany w schemacie, ten klucz służy do identyfikowania instancji tarczy zegarka. Aby ułatwić nam to zadanie, możesz podać identyfikator podczas dzwonienia pod numer WatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98)
  • Rozszerzone DefaultComplicationDataSourcePolicy z możliwością ustawienia domyślnego ComplicationTypes dla dostawcy podstawowego, dodatkowego i zapasowego dostawcy systemu. ComplicationSlot.defaultDataSourceType zostało wycofane. (If0ce3)
  • ComplicationSlot.configExtras można teraz modyfikować i aktualizować przed wywołaniem EditorSession.openComplicationDataSourceChooser(). (I6f852)
  • Dodano: WatchFace.setComplicationDeniedDialogIntentsetComplicationRationaleDialogIntent. Te intencje są uruchamiane, aby wyświetlić okno z uzasadnieniem przed poproszeniem o uprawnienia do komplikacji, a także inne okno z wyjaśnieniem, że uprawnienia do komplikacji są potrzebne podczas próby edytowania komplikacji, gdy uprawnienia zostały odrzucone (wybieranie dostawcy nie będzie działać, więc to okno jest potrzebne). (I3a29c)
  • Wartości UserStyleSchemaComplicationSlots można teraz zdefiniować w XML. Upraszcza to tworzenie tarcz zegarka i przyspiesza zapytania WatchFaceMetadataClient, ponieważ nie muszą one łączyć się z usługą, aby uzyskać metadane. (I85bfa)
  • Dodano InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent, aby klient mógł sprawdzić, czy tarcza zegarka obsługuje getPendingIntentForTouchEvent. (I0b917)
  • Atrybuty WatchFaceMetadataClient i ListenableWatchFaceMetadataClient nie są już eksperymentalne. Można ich używać do efektywnego uzyskiwania metadanych tarczy zegarka, w miarę możliwości bez otwierania pliku tarczy zegarka. (Ibb827)
  • Dodaliśmy obsługę synchronicznych dostawców widżetów, w przypadku których widżet jest aktualizowany z większą częstotliwością niż zwykle, nawet raz na sekundę, gdy tarcza zegarka jest widoczna i nie jest w trybie otoczenia. Aby z niej korzystać, dostawca musi dodać do manifestu nowy tag metadanych androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS i zastąpić tag onSynchronousComplicationRequest. W zależności od charakteru źródła danych może być też konieczne zastąpienie metod onStartSynchronousComplicationRequestsonStopInteractiveComplicationRequests, aby otrzymywać powiadomienia o tym, kiedy widżet wchodzi w tryb interaktywny i kiedy go opuszcza. (I8fe9d)

Wersja 1.0

Wersja 1.0.1

9 lutego 2022 r.

Publikacja androidx.wear.watchface:watchface-*:1.0.1 Wersja 1.0.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono błąd polegający na nieprawidłowym działaniu elementu PhotoImageComplicationData tapAction (I1cc30)

Wersja 1.0.0

1 grudnia 2021 r.

Publikacja androidx.wear.watchface:watchface-*:1.0.0 Wersja 1.0.0 zawiera te zatwierdzenia.

Główne funkcje wersji 1.0.0

androidx.wear.watchface to nowa, zalecana biblioteka do tworzenia tarcz zegarka WearOS. Zawiera ona szereg nowych funkcji w porównaniu ze starą biblioteką pomocy dla urządzeń do noszenia.

  • Biblioteka bezpośrednio obsługuje stylizację przez użytkownika (np. zmianę palety kolorów, stylu wskazówek zegarka, wyglądu oznaczeń godzin itp.) (patrz androidx.wear.watchface.style). Opracowanie edytora tarczy zegarka na urządzeniu z Androidem Wear jest teraz znacznie łatwiejsze dzięki użyciu androidx.wear.watchface.editor. Tarczę zegarka można edytować w aplikacji towarzyszącej systemu bez konieczności pisania dodatkowego kodu.
  • Sprawdzone metody są wbudowane w usługę. Biblioteka automatycznie generuje etykiety treści dla czytników ekranu w przypadku komplikacji (możesz też dodać własne), a liczba klatek na sekundę automatycznie spada, gdy bateria jest słaba i nie jest ładowana, aby wydłużyć czas pracy na baterii.
  • Do opracowania tarczy zegarka potrzeba mniej kodu, zwłaszcza w przypadku komplikacji, w których wiele powtarzalnych elementów zostało przeniesionych do biblioteki.

Poprawki błędów

  • Rozwiąż problem dotyczący produktu: EditorSession.userStyle.compareAndSet (I6f676)
  • Rozwiązywanie problemów z bardzo krótkimi opóźnieniami na tarczy zegarka (Iffb97)
  • Wysyłanie InteractiveWatchFaceImpl.onDestroy w wątku UI (I83340)
  • Rozwiązanie kilku problemów z odbiornikami transmisji (I7d25f)

Wersja 1.0.0-rc01

3 listopada 2021 r.

Publikacja androidx.wear.watchface:watchface-*:1.0.0-rc01 Wersja 1.0.0-rc01 zawiera te zatwierdzenia.

Poprawki błędów

  • Naprawiono funkcję dump() (wywoływaną przez adb shell dumpsys), która została uszkodzona przez migracje przepływu. (087cf9e)

  • Zadbaj o prawidłową kolejność wywołań writeDirectBootPrefs. Chcemy, aby funkcja writeDirectBootPrefs zawsze była uruchamiana po funkcji initStyleAndComplications, ponieważ w przeciwnym razie możemy opóźnić inicjowanie wątku interfejsu.(37650ac)

  • Sprawdź, czy wywoływana jest funkcja Renderer.onDestroy. Jeśli render został utworzony, ale inicjowanie WF nie zostało zakończone i wywołano Engine.onDestroy, musimy wywołać Renderer.onDestroy. (f9952dc)

  • Optymalizacja/poprawka funkcji isBatteryLowAndNotCharging. Ta zmiana przenosi wcześniejszą konfigurację zmiennej isBatteryLowAndNotCharging, co oznacza, że można ją wykonać równolegle z funkcją createWatchFace. Dodatkowo nasłuchujemy teraz ACTION_POWER_DISCONNECTED. (ddffd80

  • InteractiveWatchFaceClientImpl.isConnectionAlive ma wartość false po zamknięciu (ab9774e)

Wersja 1.0.0-beta01

27 października 2021 roku

Publikacja androidx.wear.watchface:watchface-*:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zatwierdzenia.

Wersja 1.0.0-alpha24

13 października 2021 r.

Publikacja androidx.wear.watchface:watchface-*:1.0.0-alpha24 Wersja 1.0.0-alpha24 zawiera te zatwierdzenia.

Zmiany w interfejsie API

  • Klasy w pakiecie androidx.wear.watchface.complications zostały przeniesione do nowego projektu wear:watchface:watchface-complications. Pamiętaj, że nie możesz uwzględnić tej biblioteki ani żadnej poprzedniej wersji alfa wear:watchface:watchface-complications-data, ponieważ spowoduje to błędy związane z duplikatami klas. (I97195)
  • Funkcja Renderer.dump została zmieniona na Renderer.onDump i oznaczona adnotacją @UiThread. (I44845)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener zmienił(a) nazwę na addOnWatchFaceReadyListener, a removeWatchFaceReadyListener na removeOnWatchFaceReadyListener. (I48fea)
  • EditorSession getComplicationsPreviewDatagetComplicationsDataSourceInfo nie są już funkcjami zawieszającymi, ale właściwościami StateFlow<>, których wartość początkowo wynosi null. W klasie ListenableEditorSession usunięto pola getListenableComplicationPreviewDatagetListenableComplicationsProviderInfo na rzecz nowych obiektów StateFlow<> z klasy bazowej. Jeśli chcesz posłuchać zmian w kodzie Java, możesz użyć androidx.lifecycle.FlowLiveDataConversions.asLiveData, aby przekonwertować go na LiveData<>. (Ic5483)

Wersja 1.0.0-alpha23

29 września 2021 r.

Publikacja androidx.wear.watchface:watchface-*:1.0.0-alpha23 Wersja 1.0.0-alpha23 zawiera te zatwierdzenia.

Nowe funkcje

Biblioteka tarcz zegarka jest teraz jedną grupą bibliotek, w związku z czym biblioteki zostały przeniesione i 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 w interfejsie API

  • Przenieś osobne biblioteki androidx.wear Watchface i Complications do grupy bibliotek androidx.wear.watchface. (b25f3c0)
  • Dodano pole EditorRequest.canWatchFaceSupportHeadlessEditing, aby poinformować klienta, czy edytor tarczy zegarka obsługuje edytowanie bez interfejsu. W tym przypadku mogą wystąpić fałszywe negatywne wyniki, ponieważ obsługa została dodana w asop/1756809, ale w przypadku wszystkich przyszłych tarcz zegarka zwróci prawidłową wartość. (ca55590)
  • Klasa Renderer ma teraz metodę dump(), którą można zastąpić, aby dodać niestandardowe dane do informacji generowanych przez usługę aktywności ABD shell dumpsys WatchFaceService. (95235f9)
  • Metoda InteractiveWatchFaceClient.addWatchFaceReadyListener najpierw określa wykonawcę. (563ac2f)
  • Klasa StateFlowCompatHelper została usunięta. Zamiast niej należy używać metody asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
  • Właściwość CurrentUserStyleRepository.userStyle nie jest już modyfikowalna. (I44889)
  • Interfejs WatchFaceReadyListener został zmieniony na OnWatchFaceReadyListener. (Ic12a9)

Poprawki błędów

  • Wywołanie metody onDestroy za pomocą InteractiveInstanceManager.deleteInstance jest konieczne, aby obiekt InteractiveWatchFaceImpl został usunięty z pamięci.(fce4af8, b/199485839)