Tarcze zegarka Wear

tworzyć aplikacje na zegarki z Wear OS by Google.

Uwaga: od 10 lipca 2024 r. Format tarczy zegarka jest wymagany, aby można było instalować tarcze zegarka na urządzeniach z wstępnie zainstalowanym Wear OS 5, a od 27 stycznia 2025 r. – także wszystkie nowe tarcze zegarka publikowane w Google Play.

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

Ostatnia aktualizacja Wersja stabilna Wersja kandydująca Wersja Beta Wersja alfa
18 września 2024 r. 1.2.1 - - 1.3.0-alpha04

Deklarowanie zależności

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

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

Odlotowe

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 zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.

Tworzenie nowego zgłoszenia

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

Wersja 1.3

Wersja 1.3.0-alpha04

18 września 2024 r.

androidx.wear.watchface:watchface-*:1.3.0-alpha04 został zwolniony. Wersja 1.3.0-alpha04 zawiera te komity.

Nowe funkcje

  • Dodaliśmy obsługę leniwego wczytywania ikon w UserStyleSettingsUserStyleOptions, co poprawia wydajność wczytywania tarcz zegarka. (Iaf43d)
  • Dodano opcję aktualizowania zrzutu ekranu, gdy zmienia się konfiguracja systemu (np. lokalizacja), za pomocą nowego przycisku Watchface.setUpdateScreenshotOnConfigurationChange. Domyślnie to ustawienie jest wyłączone (I765a1).

Poprawki błędów

  • Usunięto 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 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji podczas korzystania z AGP 8.1 lub nowszej (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do 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.

androidx.wear.watchface:watchface-*:1.3.0-alpha03 został zwolniony. Wersja 1.3.0-alpha03 zawiera te komity.

Zmiany w interfejsie API

  • Dodaliśmy funkcję EditorSession#setOverrideComplications, która tymczasowo ustawia ComplicationData 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 dowolnej osi czasu, co oznacza, że kolejny test równości odwołania zawsze zawieszał się. Oznaczało to, że komplikacje były wczytywane w każdej klatce, co powodowało zużycie baterii. (717406)

Wersja 1.3.0-alpha02

3 kwietnia 2024 r.

androidx.wear.watchface:watchface-*:1.3.0-alpha02 został zwolniony. Wersja 1.3.0-alpha02 zawiera te komity.

Nowe funkcje

  • Teraz do porównywania wartości best i selectedData używamy równości referencyjnej, ponieważ operator równości jest kosztowny. (446b00)

Zmiany w interfejsie API

  • Dodaliśmy interfejs API dynamiczny bez opcji zastępowania dla usługi GoalProgressComplicationData. (c33264)

Wersja 1.3.0-alpha01

7 lutego 2024 r.

androidx.wear.watchface:watchface-*:1.3.0-alpha01 został zwolniony. Wersja 1.3.0-alpha01 zawiera te zatwierdzenia.

Nowe funkcje

  • Obiekty WatchFaceServices można inicjować równolegle, dlatego powinny być bezstanowe. Aby to umożliwić, dodaliśmy obiekt StatefulWatchFaceService, w którym dodatkowe dane zdefiniowane przez użytkownika i utworzone przez createExtra() są przekazywane do wszystkich zastąpień wywoływanych podczas inicjalizacji.
  • Funkcja GlesRenderer2 ma teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów, które mają być kolejno próbowane w funkcji eglChooseConfig.

Zmiany w interfejsie API

  • StatefulWatchFaceService obsługuje teraz zastąpienie getComplicationSlotInflationFactory, do którego przekazywana jest dodatkowa wartość zdefiniowana przez użytkownika i 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 WatchFaceServices z uwzględnieniem stanu. Jest to niebezpieczne, ponieważ może doprowadzić do utworzenia wielu instancji jednocześnie, co może spowodować błędy. Aby rozwiązać ten problem, wprowadziliśmy typy StatefulWatchFaceServiceStatefulWatchFaceRuntimeService, w których typ zdefiniowany przez użytkownika jest tworzony przez funkcję createExtra() i przekazywany różnym metodom tworzenia jako parametr. (If8a99)
  • Dodaliśmy getUserStyleFlavors do InteractiveWatchFaceClient, co jest interesujące głównie dla producentów OEM. (I0f5d8)
  • GlesRenderer2 ma teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów, które mają być kolejno próbowane w funkcji eglChooseConfig. Dzięki temu możesz najpierw wypróbować konfigurację z wygładzaniem krawędzi, a w razie potrzeby przejść do konfiguracji bez tego ustawienia. (I1ba74)
  • W ramach Android U do Wear OS zostanie dodana obsługa SystemDataSources.DATA_SOURCE_HEART_RATE. Ta widżet jest obsługiwany tylko w przypadku widżetów SHORT_TEXT, ale zalecamy, aby ComplicationSlot obsługiwał też SMALL_IMAGE, ponieważ producenci urządzeń mogą wyświetlać skrót do swojej aplikacji do zdrowia zamiast bieżącej wartości. (I34223)
  • Dodaliśmy METADATA_KEY_CONFIG_RESTORE_SUPPORTED, który od Androida U w górę kontroluje, co się dzieje, gdy system jest przywracany z kopii zapasowej dla ź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 komplikacji obsługuje tworzenie kopii zapasowych wszystkich danych konfiguracji, ale jeśli tak nie jest, może dodać ustawienie metadanych METADATA_KEY_DATA_SOURCE_CONFIG_ACTION na wartość false, co spowoduje oznaczenie slotu komplikacji jako nieskonfigurowanego. (I6c505)

Wersja 1.2

Wersja 1.2.1

24 stycznia 2024 r.

androidx.wear.watchface:watchface-*:1.2.1 został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Usunięto problem z zawieszaniem się aplikacji na zegarkach Samsung Galaxy Watch 4, 5 i 6. (43f0b0)

Wersja 1.2.0

29 listopada 2023 r.

androidx.wear.watchface:watchface-*:1.2.0 został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.1.0

  • Dodaliśmy obsługę kilku nowych typów widżetów, które są dostępne w Androidzie T:
    • GoalProgressComplicationData, która jest podobna do funkcji RangedValueComplicationData, ale służy do obliczania postępu w realizacji celu, w którym wartość minimalna jest domyślnie równa 0, 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ą być wyświetlane jako wykres kołowy, w którym kolory muszą być znaczące w danym kontekście, ponieważ w kompilacji zwykle nie ma miejsca na renderowanie etykiet.
  • Dodaliśmy obsługę opcjonalnej właściwości ColorRanges do znacznika RangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasami ComplicationDataSource jest najlepszym miejscem do ustawiania kolorów, np. gdy mają one określone znaczenie semantyczne. np. czerwony na niebieski w przypadku temperatury.
  • Obecnie prawie każdy typ ComplicationData obsługuje SmallImages.
  • Dodaliśmy ComplicationDisplayPolicy, gdzie DO_NOT_SHOW_WHEN_DEVICE_LOCKED instruuje zgodną tarczę zegarka, aby nie wyświetlała widżetu, gdy urządzenie jest zablokowane.
  • W Androidzie T producenci OEM będą mogli określić, czy prośba o komplikację pochodzi z tarczy zegarka na liście zdefiniowanej przez metadane android.support.wearable.complications.SAFE_WATCH_FACES w pliku manifestu dostawcy ComplicationRequest#isForSafeWatchFace. Do odbierania czegokolwiek innego niż „TargetWatchFaceSafety.UNKNOWN” dostawca będzie potrzebować uprawnienia com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.
  • Funkcja UserStyleFlavors przestała być eksperymentalna.

Wersja 1.2.0-rc01

18 października 2023 r.

androidx.wear.watchface:watchface-*:1.2.0-rc01 został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.

Wersja 1.2.0-beta02

6 września 2023 r.

androidx.wear.watchface:watchface-*:1.2.0-beta02 został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.

Nowe funkcje

  • SuspendingComplicationDataSourceService#onDestroy jest teraz otwarta. Pamiętaj, że usunęliśmy obsługę domyślnego widżetu pogody.

Zmiany w interfejsie API

  • Cofnij „Ujawnij nowe źródło danych dla widżetów pogody”. (I6f335)

Wersja 1.2.0-beta01

23 sierpnia 2023 r.

androidx.wear.watchface:watchface-*:1.2.0-beta01 został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.

Nowe funkcje

  • Od wersji Android T WearOS będzie obsługiwać domyślną komplikację pogody.

Zmiany w interfejsie API

  • Dodaj domyślny system pogody jako alternatywę dla widżetów. (Ia0994)
  • Ta poprawka dodaje WatchFaceRuntimeService i WatchFaceControlClient.createWatchFaceRuntimeControlClient oraz owijacze guava. Dodają one obsługę czasów działania tarczy zegarka, czyli specjalnego rodzaju tarczy, która wczytuje definicję z innego pakietu. Obecnie WearOS obsługuje tylko środowisko uruchomieniowe dla formatu tarczy zegarka Androida. (I2799f)
  • Ta poprawka jest kontynuacją poprawki aosp/2636578, w której zmieniliśmy nazwy definicji int, więc nie trzeba zmieniać kodu zależnego od WatchFaceType, CanvasType, TapType ani ComplicationsSlotBoundsType. (I4098b)
  • zaktualizowane pliki interfejsu API, aby dodać adnotacje do pomijania zgodności; (I8e87a, b/287516207)
  • Ta poprawka udostępnia stałe WatchFaceType w funkcji WatchFaceTypes, stałe CanvasType w funkcji CanvasTypes, stałe TapType w funkcji TapTypes oraz stałe ComplicationsSlotBoundsType w funkcji ComplicationsSlotBoundsType. (I3b85a, b/288750666)
  • WatchFace.OverlayStyle jest bardzo rzadko używany i nie jest dobrze obsługiwany przez producentów OEM, dlatego obniżamy jego wartość z zamiarem usunięcia go w przyszłości. (I7344a)

Wersja 1.2.0-alpha09

21 czerwca 2023 r.

androidx.wear.watchface:watchface-*:1.2.0-alpha09 został zwolniony. Wersja 1.2.0-alpha09 zawiera te commity.

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodano dynamiczne typy danych dla dziennego dystansu, dziennych kalorii i dziennych pięter. Klucze źródeł danych o zdrowiu platformy są teraz dostępne w sekcji PlatformHealthSources.Keys (Ib7637).
  • W celu udostępniania tętna i liczby kroków na dzień użyj elementu PlatformDataProvider. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)
  • Zmień nazwę interfejsu StateEntryValue na DynamicDataValue i zaktualizuj interfejsy API stanu, aby używać interfejsu DynamicDataKey. (If1c01)
  • Dodaj AppDataKey, aby uzyskać dostęp do stanu aplikacji przesyłanej strumieniowo; dodaj PlatformDataKey, aby uzyskać dostęp do danych platformy; dodaj obsługę przestrzeni nazw w StateStore. (I7985e)
  • Formy płatności enable/disablePlatformSource zostały usunięte z poziomu DynamicTypeEvaluator. Osoba dzwoniąca powinna być odpowiedzialna za aktualizacje. (I78c6d)
  • Umożliwianie ograniczania rozmiaru powiązanych typów danych. (Ie2966)

Wersja 1.2.0-alpha08

19 kwietnia 2023 r.

androidx.wear.watchface:watchface-*:1.2.0-alpha08 został zwolniony. Wersja 1.2.0-alpha08 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 może wyświetlać różne typy tarcz zaufanym i niezaufanym użytkownikom.

Zmiany w interfejsie API

  • Propagowanie klasy @Deprecated do usługi (I882d1, b/271441831)
  • Zmieniono nazwę parametru wartości Enum.valueOf (Ia9b89)
  • Więcej wyjątków zgłaszanych przez metodę valueOf (I818fe)
  • Usunęliśmy renderWatchFaceToSurface na rzecz createRemoteWatchFaceView, która jest zbudowana na podstawie SurfaceControlViewHost i pozwala wywołującemu wstawić widok z tarczy zegarka, który jest renderowany, gdy klient wywołuje RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • Dodano użytkownika renderWatchFaceToSurface do Dysków zespołów InteractiveWatchFaceClient, HeadlessWatchFaceClientEditorSession. Zwykle jest to wydajniejsze niż renderowanie do formatu bitmapy. (Ieacad)
  • Nazwa ObservableStateStore została zmieniona na StateStore. (Ieb0e2)
  • Zamiast argumentów konstruktora dodano argument DynamicTypeEvaluator.Builder, aby umożliwić stosowanie większej liczby argumentów opcjonalnych, w tym ObservableStateStore, który domyślnie jest pustym sklepem. (I6f832)
  • Zmieniono kolejność parametrów w funkcji DynamicTypeEvaluator. (Ic1ba4)
  • Executor został dodany do metod DynamicTypeEvaluator.bind. (I346ab)
  • Do metody BoundDynamicType dodaliśmy metodę startEvaluation, aby wywołać ocenę po przypisaniu 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ą metadane 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

androidx.wear.watchface:watchface-*:1.2.0-alpha07 został zwolniony. Wersja 1.2.0-alpha07 zawiera te commity.

Nowe funkcje

  • W Androidzie T producenci OEM będą mogli określić, czy prośba o komplikację pochodzi z tarczy zegarka na liście zdefiniowanej przez metadane android.support.wearable.complications.SAFE_WATCH_FACES w pliku manifestu dostawcy.ComplicationRequest#isForSafeWatchFace Aby otrzymywać inne dane niż TargetWatchFaceSafety.UNKNOWN, dostawca będzie potrzebować uprawnienia com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.

  • Dostępny jest też format Android T CustomValueUserStyleSetting2, który może pomieścić do 12,5 KB. Poprzedni limit dla CustomValueUserStyleSetting wynosił 1 KB. Pomimo zwiększenia limitów rozmiaru deweloperzy tarcz zegarka powinni ograniczać ilość danych, ponieważ ustawienia są wysyłane przez Bluetooth podczas edycji, a pasmo Bluetooth jest ograniczone.

Zmiany w interfejsie API

  • Do parametrów GlesRenderer i GlesRenderer2 dodaliśmy opcjonalny parametr eglContextAttribList, który umożliwia ustawienie wartości EGL14.EGL_CONTEXT_CLIENT_VERSION przekazywanej do parametru EGL14.eglCreateContext. (I2a83e)
  • Biblioteki tarcz zegarka zostały przeniesione do androidx.core.util.Consumer zamiast java.util.function.Consumer. (I273f5)
  • Więcej wyjątków rzucanych przez metody 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 starszych tarcz zegarka. (I24c89)
  • Zdecydowaliśmy, że isForSafeWatchFace powinien mieć 3 stany IntDef. (Ief2f7)
  • W Androidzie T wprowadziliśmy ComplicationRequest.isForSafeWatchFace, który jest przeznaczony dla producentów OEM i wymaga com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. W przypadku źródeł danych w systemie obrazowym zwróci wartość „prawda”, jeśli tarcza zegarka, która wysyła żądanie, znajduje się na liście bezpiecznych tarcz zegarka określonej przez źródło danych w jego pliku manifestu. (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.

androidx.wear.watchface:watchface-*:1.2.0-alpha06 został zwolniony. Wersja 1.2.0-alpha06 zawiera te commity.

Nowe funkcje

  • Pracujemy nad dodaniem obsługi wiązań z platformą komplikacji, ale ta funkcja nie jest jeszcze gotowa do użycia. Bądź na bieżąco.
  • Dodaliśmy obsługę XML ComplicationSlot dla nowych typów widżetów, GOAL_PROGRESS i WEIGHTED_ELEMENTS.

Poprawki błędów

  • Rozwiązanie problemu polegającego na tym, że edytor tarcz zegarka nie był prawidłowo udostępniany na urządzeniach Samsung. (3b5987)
  • Naprawiono błąd polegający na tym, że czasami widżety nie wyświetlały się prawidłowo podczas przełączania się między tarczami z wieloma ulubionymi. (b38ece)
  • Naprawiono błąd serializacji związany z nazwami funkcji dla czytnika ekranu, który powodował awarie tarczy zegarka. (e9f466)

Wersja 1.2.0-alpha05

7 grudnia 2022 r.

androidx.wear.watchface:watchface-*:1.2.0-alpha05 został zwolniony. Wersja 1.2.0-alpha05 zawiera te commity.

Nowe funkcje

  • Niedawno dodaliśmy obsługę hierarchicznej UserStyleSettings, a od Androida T można mieć w hierarchii więcej niż 1 ComplicationSlotsUserStyleSetting. Na podstawie wybranego przez użytkownika stylu aktywny będzie tylko jeden ComplicationSlotsUserStyleSetting.

  • Ulepszamy obsługę czytników ekranu w przypadku funkcji ListOptionComplicationSlotsOption przez dodanie pola screenReaderName. Pamiętaj, że przed Androidem T to pole będzie ignorowane przez edytory towarzyszące.

Zmiany w interfejsie API

  • Do pól ListOptionComplicationSlotsOption dodaliśmy nowe opcjonalne pole screenReaderName, które może być używane przez edytorów. Na urządzeniach z Androidem T i starszym pole to będzie ignorowane przez edytorów w aplikacji Companion. (I75326)
  • Od Androida T w hierarchii stylów można używać wielu elementów ComplicationSlotsUserStyleSettings, o ile w danym momencie aktywny może być tylko jeden z nich. Do funkcji UserStyleSchema dodaliśmy funkcję użyteczności findComplicationSlotsOptionForUserStyle, aby ułatwić znalezienie aktywnej funkcji ComplicationSlotsOption, jeśli taka istnieje. (Ic2b06)
  • Obiekty RangedValuesTypes zostały wciągnięte do obiektu towarzyszącego RangedValueComplicationData i przemianowane na TYPE_UNDEFINEDTYPE_RATING. Dodano też nowy obiekt TYPE_PERCENTAGE. (I55d02)
  • Zmieniliśmy nazwę eksperymentalnej wersji DynamicFloat na FloatExpression i oznaczyliśmy ją jako @hide. (Idf4f1)
  • Dodawanie adnotacji @JvmDefaultWithCompatibility (I8f206)

Wersja 1.2.0-alpha04

9 listopada 2022 r.

androidx.wear.watchface:watchface-*:1.2.0-alpha04 został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.

Nowe funkcje

  • W Androidzie T dodaliśmy obsługę 2 nowych typów widżetów: GoalProgressComplicationDataWeightedElementsComplicationData.
  • Atrybut GoalProgressComplicationData jest podobny do atrybutu RangedValueComplicationData, ale jego wartość może być większa od wartości docelowej (w przypadku atrybutu RangedValueComplicationData wartość jest ograniczona do zakresu [min .. max]), co ma konsekwencje dla projektu wizualnego, 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 w przypadku właściwości RangedValueComplicationData.
  • W Androidzie T dodaliśmy do ComplicationData wartości ComplicationPersistencePolicysetCachePolicy, które umożliwiają dostawcy określenie, czy komplikacja ma być trwała (czyli czy ma być zapisana w pamięci podręcznej po ponownym uruchomieniu). Większość widżetów nie wymaga ustawiania kontroli pamięci podręcznej, ale może to pomóc w rozwiązaniu problemów z nieaktualnymi danymi w przypadku niektórych widżetów, które są często aktualizowane (np. widżetów danych o zdrowiu). Dodaliśmy też ComplicationDisplayPolicy, gdzie DO_NOT_SHOW_WHEN_DEVICE_LOCKED instruuje zgodną tarczę zegarka, aby nie wyświetlała widżetu, gdy urządzenie jest zablokowane. (Ic9574)

Zmiany w interfejsie API

  • Usługi GoalProgressComplicationData, WeightedElementsComplicationDataColorRamp nie są już eksperymentalne. (Ica9e2)
  • Interfejsy ComplicationPersistencePolicyComplicationDisplayPolicy są teraz prawidłowo oznaczone jako interfejsy T. (I31d88)
  • Wycofany konstruktor ComplicationSlotOverlay ma teraz parametr DeprecationLevel.WARNING, który umożliwia jego ponowne wywołanie z języka Java. (Ib308c)
  • Rozwiązaliśmy niektóre problemy z kompatybilnością z językiem Java w przypadku wersji ComplicationRequestListener, CanvasComplication, ComplicationTapFilterInteractiveWatchFaceClient, oznaczając je adnotacją @JvmDefaultWithCompatibility (Id94fc).
  • Usunęliśmy eksperymentalne opcje ProtoLayoutComplicationDataListComplicationData. Informacje o tych funkcjach były niejasne, ale mamy nadzieję, że uda nam się zająć tym tematem w przyszłości. (I9df05)
  • Dodaliśmy do ValueType komponent ValueType.RangedValueComplicationData WeightedElementsComplicationData obsługuje teraz kolor tła. Usunęliśmy DiscreteRangedValueComplicationData, ponieważ jego funkcje są podzbiorem funkcji WeightedElementsComplicationData. (I6446c)

Poprawki błędów

  • W znaku równości i znaku krzyżyka musi być zawarta wartość isForScreenShot. Upewnij się, że element onRenderParametersChanged ma prawidłową wartość isForScreenshot (I04a41)
  • Rozwiązano problem z wyciekami WatchFaceControlService z klientów bez głowy. (e90e00)

Wersja 1.2.0-alpha03

5 października 2022 r.

androidx.wear.watchface:watchface-*:1.2.0-alpha03 został zwolniony. Wersja 1.2.0-alpha03 zawiera te komisy.

Nowe funkcje

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

Zmiany w interfejsie API

  • Wycofane środowisko wykonawcze UserStyleSchema.userStyleSettings, ponieważ środowisko rootUserStyleSettings przestało być eksperymentalne (Ie96e3)
  • Przenieś rootUserStyleSettings z wersji eksperymentalnej (I8d6b3)
  • Oznaczyliśmy WatchFaceColors jako funkcję eksperymentalną, ponieważ nie jest ona obsługiwana przez wszystkie systemy (I6d75d)
  • Udostępnij DisconnectReasons w interfejsie API publicznego, aby działał z IntDef. (I791f8)

Poprawki błędów

  • Zamknij wszystkie otwarte edytory na zegarku, jeśli SysUI się rozładuje. Jeśli SysUI się wyłączy, a edytor tarczy zegarka nie zamknie się, tarcza może pozostać w niezgodnym stanie, ponieważ system polega na SysUI, aby zachować wszelkie zmiany stylu użytkownika.(ba762a
  • Naprawiono wyciek pamięci w ComplicationDataSourceInfoRetriever, gdzie kontynuacja coroutine w Kotlin działała jako root gc i zatrzymywała aktywność edytora (33ee06).

Wersja 1.2.0-alpha02

21 września 2022 r.

androidx.wear.watchface:watchface-*:1.2.0-alpha02 został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.

Nowe funkcje

  • Niektóre tarcze mają konfigurację poza UserStyle, która wpływa na ich wygląd (np. wybór zdjęcia tła). Dodaliśmy Renderer.sendPreviewImageNeedsUpdateRequest, który umożliwia tarczy zegarka wysłanie prośby o zaktualizowanie obrazu podglądu. Pamiętaj, że wymaga to odpowiedniej aktualizacji systemu.

  • Dodaliśmy też interfejs API dla tarcz zegarka, aby udostępnić ich kolory systemowi, który może na ich podstawie wybrać paletę kolorów. Uwaga: ta funkcja została wprowadzona w eksperymentalnej wersji w następnym pakiecie poprawek.

  • Obecnie prawie każdy typ ComplicationData obsługuje SmallImages.

Zmiany w interfejsie API

  • Menedżer tapet może czasami odłączyć się od jednego silnika i utworzyć inny. Dodaliśmy definicję DisconnectReason i rozszerzyliśmy ClientDisconnectListener o nową metodę, która obejmuje DisconnectReason, co pozwala słuchaczowi obserwować odłączanie się silnika. (I45cce)
  • Do konstruktora ComplicationSlotOverlay dodano 2 opcjonalne parametry: nameResourceIdscreenReaderResourceId (I157e8).
  • Dodaliśmy opakowanie guava dla nowej przeciążenia getOrCreateInteractiveWatchFaceClientPreviewImageUpdateRequestedListener. (Ic31f0)
  • Dodaliśmy Renderer.sendPreviewImageNeedsUpdateRequest, co jest przydatne w przypadku tarcz zegarka, które mają stan poza UserStyleSchema, który wpływa na ich wygląd (np. tarcza zegarka z możliwością wyboru obrazu tła). Po stronie klienta do parametru getOrCreateInteractiveWatchFaceClient dodaliśmy parametr opcjonalny PreviewImageUpdateRequestedListener, aby obserwować te żądania. (Iff44a)
  • Uprościliśmy interfejs API udostępniający funkcję WatchFaceColors. Teraz w renderze jest prosta właściwość o nazwie watchFaceColors, którą może ustawiać tarcza zegarka. Należy ją zaktualizować w razie potrzeby w odpowiedzi na 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 najpopularniejsze kolory tarczy zegarka. Dodaliśmy też do Renderera otwarte metody watchfaceColorsnotifyWatchFaceColorsChanged, które umożliwiają systemowi uzyskanie kolorów tarczy zegarka za pomocą WallpaperManager.getWallpaperColors. (I3d611)
  • ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData (a także eksperymentalne DiscreteRangedValueComplicationData, GoalProgressComplicationDataWeightedElementsComplicationData) obsługują teraz SmallImages. Jeśli tarcza zegarka zdecyduje się na renderowanie widżetu w wielu kolorach, będzie mogła użyć wielokolorowego SmallImage, podczas gdy wcześniej musiała używać obrazu monochromatycznego. (I257df)
  • Przerzuć PreviewImageUpdateRequestedListener na Consumer<> (Ia875d)
  • Zastąp niestandardowy typ pojedynczej abstrakcyjnej metody (SAM) OnWatchfaceColorsListener ogólnym typem SAM w języku Java (konsumencki) (I0c489)
  • Wycofujemy stare metody getOrCreateInteractiveWatchFaceClientlistenableGetOrCreateInteractiveWatchFaceClient, które nie określają parametru 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.

androidx.wear.watchface:watchface-*:1.2.0-alpha01 został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.

Nowe funkcje

  • Dodaliśmy obsługę różnych nowych formatów widżetów w ramach eksperymentu. Jest to obszar, nad którym pracujemy. Nowe formaty mogą ulec zmianie bez powiadomienia. Obecnie CanvasComplicationDrawable nie obsługuje żadnych silników renderujących.
  • Dodaliśmy też opcjonalne marginesy do slotów widżetów, dzięki czemu łatwiej jest klikać małe widżety.

Zmiany w interfejsie API

  • Eksperymentalna klasa BoundingArc jest teraz niezmienna. (If624a)
  • Małe widżety mogą być trudne do kliknięcia. Aby temu zaradzić, wprowadziliśmy obsługę marginesów, które zwiększają obszar dotykowy bez wpływu na renderowanie. O ile nie określono inaczej (w kodzie lub w pliku XML), element ComplciationSlots ma zerowe marginesy. (I14089)
  • Zmieniono podpis getComplicationSlotInflationFactory(CurrentUserStyleRepository), aby zwracał instancję fabryki inną niż null. Wcześniej zwracanie wartości null było błędem, więc teraz umowa interfejsu API jest bardziej przejrzysta. (I0fcc0)
  • Dodaliśmy argument currentUserStyleRepository do metody WatchFaceService.getComplicationSlotInflationFactory, aby zachować spójność z metodą createComplicationSlotsManager. (I2ddd2)
  • UserStyleFlavors stała się funkcją nieeksperymentalną. (I69cdc)
  • Usunęliśmy z poziomu ValueType eksperymentalny poziom ValueType, a zamiast niego wprowadziliśmy eksperymentalny poziom DiscreteRangedValueComplicationData, który jest podobny do poziomu RangedValueComplicationData, ale z innym zakresem i wartością całkowitą.RangedValueComplicationData Wprowadziliśmy też eksperymentalną funkcję GoalProgressComplicationData, która jest podobna do funkcji RangedValueComplicationData, ale służy do obliczania postępów w realizacji celu, gdy wartość minimalna jest domyślnie równa 0, a wartość może być większa niż targetValue. Uwaga: we wszystkich wariantach RangedValue musisz podać co najmniej jeden z elementów monochromeImage, text lub title. (I9590c)
  • Usunęliśmy boundsWithMarginsComplicationSlotState, ponieważ oprogramowanie systemowe nie ma zastosowania dla tego typu. (I42e26)
  • Dodaliśmy eksperymentalną obsługę WeightedElementsComplicationData, która składa się z tablicy elementów (par wag i kolorów) oraz opcjonalnego tekstu, tytułu lub obrazu. Mogą być wyświetlane jako wykres kołowy, w którym kolory muszą być znaczące w danym kontekście, ponieważ w kompilacji zwykle nie ma miejsca na renderowanie etykiet. (I87eea)
  • Eksperymentalna funkcja ColorRamps używana opcjonalnie przez RangedValueComplicationData i GoalProgressComplicationData umożliwia teraz określenie sekwencji do 7 kolorów oraz flagi określającej, czy kolory mają być płynnie przekształcane, czy też renderowane w postaci równych, stałych kroków kolory. (I9f5bf)
  • Parametr RangedValueComplicationData.drawSegmented został zmieniony na valueType, który jest liczbą całkowitą z odpowiednim parametrem ValueType IntDef, który nadaje znaczenie semantyczne wartości zakresowej i może być używany przez moduł renderowania do wpływania na styl. (I0616b)
  • Dodaliśmy eksperymentalną obsługę opcjonalnego parametru ColorRanges w funkcji RangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasami ComplicationDataSource jest najlepszym miejscem do ustawiania kolorów, np. gdy mają one określone znaczenie semantyczne. np. czerwony na niebieski w przypadku temperatury. (I5153a)
  • Dodaliśmy do RangedValueComplicationData eksperymentalny podpowiedź drawSegmented. Sygnalizuje to procesorom renderowania, 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.

androidx.wear.watchface:watchface-*:1.1.1 został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.

  • Ta wersja zawiera poprawki błędów i zdecydowanie zalecamy jej zainstalowanie użytkownikom wersji 1.1.0.

Poprawki błędów

  • Inicjalizacja tarczy zegarka jest asynchroniczna, więc jeśli otrzymasz widżet, zanim tarcza będzie gotowa, zostanie on umieszczony na liście pendingInitialComplications i zastosowany później. Niestety pendingInitialComplications została zastosowana zbyt wcześnie, co oznacza, że podczas inicjowania tarczy zegarka istniał okres, w którym komplikacje były nadal umieszczane na pendingInitialComplications i ignorowane. Problem został już rozwiązany. Ponadto ta poprawka rozwiązuje błąd polegający na tym, że ComplicationRenderer nieprawidłowo próbował wczytać elementy zastępcze asynchronicznie, co prowadziło do tego, że grafika kompilacji nigdy się nie aktualizowała. W tej łatce naprawiliśmy błąd, który – jak mamy nadzieję – występuje tylko teoretycznie, gdy trzeba scalić wiele pendingInitialComplications. (0d03ba3)

  • Rozwiązanie problemu z potencjalnym zakleszczeniem w funkcji InteractiveInstanceManager, w której funkcja getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance blokowała zamek dłużej niż to było konieczne. Zazwyczaj engine.setUserStyle jest szybka, ale jeśli z jakiegoś powodu tak się nie stanie, może dojść do blokady lub nieoczekiwanego zamknięcia aplikacji. Ta poprawka usuwa z blokady niepotrzebne operacje, eliminując tym samym możliwość wystąpienia blokady warunkowej (5a2adca).

  • Rozwiązanie kilku problemów, które spowodowały, że WatchFaceService. WakeLock może czasami zatrzymać WatchFaceService. Dodanie wywołania release() rozwiąże ten problem. Ponadto StateFlows może zachować WatchFaceService, co anuluje zmiany wprowadzone przez CoroutineScopes.(fd48138)

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

Wersja 1.1.0

15 czerwca 2022 r.

androidx.wear.watchface:watchface-*:1.1.0 został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.

Ważne zmiany od wersji 1.0.0

Ulepszona funkcja edycji:

  • Dodaliśmy obsługę schematów hierarchicznych, która umożliwia tworzenie hierarchii stylów za pomocą interfejsu edytora. Możesz teraz określić oddzielne ikony do wykorzystania na tarczy zegarka i w edytorze towarzyszącym.
  • Istnieje opcja 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, które będą używane w edytorach.
  • Eksperymentalna obsługa stylów „flavors”, czyli wyselekcjonowanej kolekcji stylów, która będzie widoczna w edytorze towarzyszącym.
  • Podczas edycji dwóch załadowanych tarcz zegarka tarcze mogą teraz współdzielić zasoby, co pozwala oszczędzać pamięć.
  • Podczas wybierania widżetu w edytorze tarczy zegarka bieżący dostawca jest teraz wstępnie wybrany.

Ulepszone widżety:

  • Teraz możesz określić ComplicationType dla podstawowych i dodatkowych źródeł danych, co daje deweloperom większą elastyczność w przypadku gotowych rozwiązań.
  • Dodaliśmy ComplicationDataTimeline, który zapewnia sekwencję danych ograniczonych czasowo, które są przesyłane na tarczę zegarka i mogą być przechowywane w pamięci podręcznej oraz aktualizowane automatycznie. Na przykład prognoza pogody na dziś w różnych godzinach lub kilka nadchodzących wydarzeń w kalendarzu.
  • ComponentName dostawcy widżetu jest częścią ComplicationData.
  • Widżety są teraz przechowywane w pamięci podręcznej, co zapewnia większą wygodę podczas przełączania się między tarczami zegarka.

Inne zmiany:

  • Właściwości UserStyleSchemaComplicationSlots można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarczy zegarka i umożliwia szybsze wysyłanie zapytań o metadane do 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.

androidx.wear.watchface:watchface-*:1.1.0-rc01 został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.

Nowe funkcje

  • Wprowadziliśmy kilka ulepszeń obsługi kodu XML tarczy zegarka, które ułatwiają określanie ComplicationSlotBounds i odwołania. Eksperymentujemy z użyciem widżetu BoundingArc na krawędzi, a następnie na drawHighlight, ale nie zalecamy używania go w tym czasie.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalne przeciążenie funkcji drawHighlight, która przyjmuje parametr BoundingArc. (I705f8)
  • Pliki XML tarczy zegarka obsługują teraz odwołania do zasobów. Umożliwia to używanie tych samych stałych wartości zarówno w pliku XML, jak i w kodzie. (I3ef61)
  • Dodaliśmy możliwość definiowania ComplicationSlotBounds w formie center_x, center_y, size_xsize_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 powodował uruchamianie zadań w niewłaściwym kontekście (4f595fe).
  • Ustaw BaseEditorSession.close jako synchroniczny. Problem z niesynchronizowanym BaseEditorSession.close polega na tym, że ComplicationDataSourceInfoRetriever jest zwalniany zbyt późno, co powoduje spam w logcat. Prawdopodobnie nie było to groźne, ale spam w logcat jest uciążliwy i należy go unikać.(35a5308)

Wersja 1.1.0-beta02

11 maja 2022 roku

androidx.wear.watchface:watchface-*:1.1.0-beta02 został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.

Nowe funkcje

  • Dodaliśmy eksperymentalne wsparcie dla nowych typów ComplicationData. Nie są one jeszcze gotowe do użycia, ale warto śledzić tę kwestię.

Zmiany w interfejsie API

  • Dodaliśmy klasę eksperymentalną BoundingArc, która opisuje geometrię pola widżetu na krawędzi. Został on dodany do ComplicationSlot i przekierowany do ComplicationSlotState oraz WatchFaceMetadataClient. (I61a40)
  • Dodaliśmy możliwość dziedziczenia ustawień w pliku XML UserStyleSetting. Dzięki temu możesz ograniczyć ilość informacji i udostępniać ustawienia między tarczami zegarka. (Ief841)
  • Dodaliśmy 2 nowe eksperymentalne typy ComplicationData: ListComplicationDataProtoLayoutComplicationData. Obecnie nie ma obsługi renderowania dla żadnego z tych typów, a WearOS nie rozpoznaje ich, jeśli są dodane do pliku manifestu ComplicationDataSource's. (I1811c)

Poprawki błędów

  • Napraw serializację typu TimeLineEntry. Nie serializowaliśmy typu TimeLineEntry, co oznacza, że buforowane TimeLineEntries typu NoData było błędnie interpretowane jako mające typ elementu rodzica, co prowadziło do nieprawidłowych wyników, gdy uzyskiwano dostęp do nieistniejących wymaganych pól. (55ffdf5)
  • Usunęliśmy błąd, który powodował, że setComplicationData usuwał pola osi czasu(fb392f5).
  • Naprawiono błąd, który w niektórych przypadkach powodował NPE(12ca62e).runBlockingWithTracing
  • Naprawiono błąd, który powodował, że czasami ClassNotFoundException: android.support.wearable.complications.ComplicationText przy odbiorze komplikacji (217942d9).
  • Usunięto błąd w funkcji GlesRenderer.backgroundThreadInitInternal, która wywoływała funkcję onBackgroundThreadGlContextCreated tylko wtedy, gdy została wywołana funkcja EGL14.eglCreateContext. Usunięto błąd powodujący błąd wizualny na zrzucie ekranu spowodowany przez verticalFlip (c674ad2).
  • Naprawiono sprawdzanie wersji WatchFaceService XML, które było ładowane z nieprawidłowego pakietu (dfa06f3).
  • Format szablonu szkiców korzysta teraz z pakietu wewnętrznego. Nie chcemy, aby zastępniki powodowały problemy z dotychczasowymi tarczami zegarka, które mogą używać ukrytej wewnętrznej funkcji ComplicationData. Wcześniej format danych NoDataComplication przechowywał w zwykłych polach zastępnik (co było problematyczne, ponieważ stare tarcze zegarków renderowały niepotrzebny ciąg znaków zastępnika). Teraz używamy pakietu wewnętrznego, aby całkowicie to wyodrębnić (d5e7bd2).

Wersja 1.1.0-beta01

20 kwietnia 2022 r.

androidx.wear.watchface:watchface-*:1.1.0-beta01 został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.

Zmiany w interfejsie API

  • Teraz metody WatchFaceMetadataClient (getUserStyleSchema, getComplicationSlotMetadataMap, getUserStyleFlavors) i HeadlessWatchFaceClient.getUserStyleFlavors rzucają unchecked RuntimeException zamiast WatchFaceException. (I0718a)
  • WatchFaceMetadataClient.WatchFaceException zostało przeniesione poza zajęcia, aby można było go ponownie użyć. (I4e869)

Poprawki błędów

  • WatchFaceMetadataClient nie będzie się już zawieszać, gdy zostanie wysłana częściowa ComplicationSlotBounds (Iaafd).

Wersja 1.1.0-alpha05

6 kwietnia 2022 roku

androidx.wear.watchface:watchface-*:1.1.0-alpha05 został zwolniony. Wersja 1.1.0-alpha05 zawiera te commity.

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ć tego do dostosowywania wyświetlania widżetów. (I44a73)

Zmiany w interfejsie API

  • Atrybuty Renderer.CanvasRendererRenderer.GlesRenderer zostały wycofane na rzecz atrybutów Renderer.CanvasRenderer2Renderer.GlesRenderer2, które obsługują atrybuty SharedAssets przekazywane do metod renderowania. W przypadku interoperacyjności Javy wprowadziliśmy ListenableCanvasRenderer2ListenableGlesRenderer2. (I31ffa)
  • Dodano możliwość definiowania @WatchFaceFlavorsExperimental motywów – wstępnie skonfigurowana lista stylizowanych tarcz zegarka (I04dd0)
  • Renderer.sharedAssets jest teraz stanem przepływu, a nieużywane Renderer.SharedAssetsFactory zostało usunięte (I12ac5).
  • Środowisko wykonawcze UserStyleSchema.userStyleSettings nie jest już wycofane (Iba7e3)
  • Dodaliśmy HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, co pozwala HeadlessWatchFaceClient uniknąć stosunkowo niewielkiego obciążenia związanego z przekazywaniem schematu przez AIDL przed obliczeniem hasha digest. (I33597)
  • Dodaliśmy isUserStyleSchemaStatic do WatchFaceMetadataClient, co jest prawdziwe tylko wtedy, gdy można mieć pewność, że UserStyleSchema nie ulegnie zmianie, chyba że zaktualizowany zostanie pakiet APK tarczy zegarka. (I45a3f)
  • Do UserStyleSchema dodaliśmy funkcję getDigestHash, która oblicza skrót skrótu schematu. Dzięki temu możesz szybko sprawdzić, czy wartość UserStyleSchema się zmieniła. (I2063d)
  • METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED zmienił nazwę na METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • Nazwa UserStyleSetting.OnWatchEditorData została zmieniona na UserStyleSetting.WatchFaceEditorData. Zawiera ona dane używane wyłącznie przez edytor tarczy zegarka. (If3afb)

Wersja 1.1.0-alpha04

9 marca 2022 r.

androidx.wear.watchface:watchface-*:1.1.0-alpha04 został zwolniony. Wersja 1.1.0-alpha04 zawiera te commity.

Zmiany w interfejsie API

  • Aktualne dane ComplicationData nie zawsze są dostępne (np. wygasłe dane ComplicationData w pamięci podręcznej), dlatego rozszerzyliśmy element NoDataComplication o opcjonalne dane zastępcze ComplicationData i dodaliśmy elementy ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDERPhotoImage.PLACEHOLDER, które można używać tylko w kontekście elementu zastępczego NoDataComplicationData. Jeśli są zaznaczone, te elementy zastępcze są renderowane za pomocą szarych prostokątów lub łuków. (I6285d)
  • Dodaliśmy ComplicationData.getNextChangeInstant, który informuje o następnym momencie po momencie odniesienia, w którym może się zmienić dowolne pole komplikacji. Jest on używany wewnętrznie do planowania ramek na potrzeby aktualizacji widżetów. Jeśli na przykład tarcza zegarka zwykle aktualizuje się raz na minutę, ustawienie komplikacji stopera spowoduje, że będzie aktualizowana raz na sekundę. (I7ceb2)
  • EditorSession.watchFaceId może być teraz używany na wszystkich poziomach interfejsu API. Dodatkowo jego wartość będzie zawsze zgodna z wartością WatchState.watchFaceInstanceId. (I323b9)
  • Interfejs API getPendingIntentForTouchEvent nie jest już potrzebny, ponieważ problem został rozwiązany w ramach frameworka, więc wszystkie powiązane interfejsy API zostały usunięte. Aby wywołać PendingIntents, tarcze zegarka nie muszą nic specjalnego robić, nawet jeśli przycisk ekranu głównego został niedawno naciśnięty. (I1f2e8)
  • Dodaliśmy parametr RendererParameters.isForScreenShot, który będzie miał wartość true, jeśli renderowanie służy do zrobienia zrzutu ekranu. Niektóre tarcze z animowanymi elementami muszą znać tę wartość, aby można było wprowadzić odpowiednie korekty i osiągnąć najlepsze wyniki. (I96d99)
  • Dodaliśmy WatchFaceExceptionReason do WatchFaceException, aby wskazać, co poszło nie tak. (I01d15)
  • Wartość ComplicationDataSourceService.onImmediateComplicationRequest została usunięta, a zamiast niej dodano wartość ComplicationRequest.immediateResponseRequired, aby wskazać, że dostawca musi szybko odpowiadać (najlepiej w czasie poniżej 100 ms). Pamiętaj, że ta funkcja jest chroniona przez uprzywilejowane uprawnienie com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE. (Ie6b23)
  • Zaktualizowano opcjonalność w jądrze i pakiecie zgodności aplikacji, aby dopasować je do wersji 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.

androidx.wear.watchface:watchface-*:1.1.0-alpha03 został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalną obsługę hierarchicznych schematów stylów. Do androidx.wear.watchface.style.UserStyleSetting.Option dodaliśmy nową właściwość childSettings, która jest początkowo używana tylko przez ListOption. Umożliwia to opisanie hierarchii stylów na potrzeby interfejsów użytkownika edytora. Użyty jako podstawa styl użytkownika pozostaje niezmieniony i nadal jest Map<String, ByteArray>. (Iaf6f4)
  • Dodaliśmy WatchFace.OverlayStyle, który umożliwia tarczy zegarka konfigurowanie renderowania nakładki stanu systemu. (I8520d)
  • Wprowadziliśmy clearWithBackgroundTintBeforeRenderingHighlightLayer nowy opcjonalny parametr konstruktora dla CanvasRenderer (domyślnie false), jeśli ustawisz go na true, płótno zostanie wyczyszczone za pomocą koloru odcienia tła. (Ie01e5)
  • Dodano klucz metadanych androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED, który pozwala źródłom danych widżetów wskazywać, że mogą one podawać wartość domyślną bez żadnej konfiguracji (Icc0d4).
  • Podczas edytowania tarczy zegarka często występuje zarówno instancja interaktywna, jak i bezgłowa. Aby oszczędzać pamięć, wprowadziliśmy Renderer.SharedAssets, który pozwala renderującemu tarczę zegara udostępniać niezmienne dane (np. tekstury i shadery) między instancjami. Parametry GlesRenderer.setEglConfigGlesRenderer.setEglDisplay są przestarzałe, ponieważ nigdy nie było planowane, aby można je było ustawiać. Ich ustawienie prowadziłoby do nieokreślonego zachowania. (I0d9e7)
  • Dodaliśmy do ComplicationSlot.Builder i odpowiednich metod dostępu w androidx.wear.watchface.client.ComplicationSlotState zmienne setNameResourceIdsetScreenReaderNameResourceId (które odwołują się do zasobów ciągu tekstowego). Dzięki temu system może pobierać nazwy ComplicationSlots na potrzeby edytorów i czytników ekranu. (If6c6a)
  • Funkcje WatchfaceMetadataClient.getUserStyleSchemagetComplicationSlotMetadataMap zwracają teraz wartość WatchFaceException zamiast RemoteException. (I86f11)
  • Funkcja onSynchronousComplicationRequest i powiązane z nią funkcje w funkcji ComplicationDataSourceService zostały przemianowane na onImmediateComplicationRequest itd. (I87ba0)
  • Edytory tarcz zegarka mają znacznie mniej miejsca na ekranie niż edytory aplikacji towarzyszącej, dlatego warto obsługiwać różne ikony dla edytorów tarcz zegarka. Ta poprawka dodaje OnWatchEditorData (obecnie zawiera tylko ikonę) do wszystkich UserStyleSettings i w stosownych przypadkach do klas opcji. (If1886)
  • Do konstruktora klasy ListenableGlesRenderer dodaliśmy parametr @JvmOverloads, aby ulepszyć współpracę z językiem Java. (I2974a)

Poprawki błędów

  • Konstruktor klasy ListenableGlesRenderer jest teraz prawidłowo oznaczony jako @Throws(GlesException::class), co umożliwia rozszerzanie tej klasy w języku Java. (Iac6d0)
  • Poprawiono błąd polegający na tym, że element PhotoImageComplicationData tapAction nie był prawidłowo obsługiwany (I1cc30).

Wersja 1.1.0-alpha02

12 stycznia 2022 r.

androidx.wear.watchface:watchface-*:1.1.0-alpha02 został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.

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 z nimi pracę.

Zmiany w interfejsie API

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

Wersja 1.1.0-alpha01

15 grudnia 2021 roku

androidx.wear.watchface:watchface-*:1.1.0-alpha01 został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.

Nowe funkcje

  • Właściwości UserStyleSchemaComplicationSlots można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarcz zegarka. Poza tym zapytania WatchFaceMetadataClient są szybsze, ponieważ nie trzeba łączyć się z usługą, aby pobrać metadane. Interfejsy API 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 osobne opcje stylizacji zdefiniowane przez użytkownika. Będą one widoczne w selektorze tarczy 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 umożliwić obsługę tego stanu i wielu instancji, identyfikator instancji tarczy zegarka jest teraz dostępny za pomocą WatchState.watchFaceInstanceId.

  • ComplicationData jest teraz przechowywany w pamięci podręcznej, aby umożliwić wyświetlanie komplikacji natychmiast po załadowaniu. Czasami system zapisuje ComplicationData w pamięci podręcznej, a czasami biblioteki tarcz zegarka serializują go. Po zserializowaniu wszystkie powiązane wartości tapAction zostaną utracone.W takim przypadku zwrócona zostanie wartość ComplicationData.tapActionLostDueToSerialization, a tarcza zegarka powinna renderować komplikację w inny sposób (np. w szarejowany lub półprzezroczysty), aby sygnalizować, że nie można jej dotknąć.true System wyśle zaktualizowane ComplicationDatatapAction najszybciej, jak to możliwe.

  • 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żesz użyć tej funkcji, aby przesłać sekwencję ComplicationData z ograniczeniem czasowym na tarczę zegarka. Może ona być przechowywana w pamięci podręcznej i automatycznie aktualizowana. Na przykład prognoza pogody na dziś w różnych godzinach lub kilka nadchodzących wydarzeń w kalendarzu. Interfejs ComplicationRequestListener został rozszerzony o nową metodę onComplicationDataTimeline, która umożliwia zwracanie tych danych.

  • Rozszerzono parametr DefaultComplicationDataSourcePolicy, aby umożliwić określenie wartości ComplicationType dla podstawowego i dodatkowego źródła danych.

  • Dodaliśmy obsługę dostawców widżetów synchronicznych, w których przypadku widżet jest aktualizowany częściej niż zwykle, nawet do 1 raza na sekundę, gdy tarcza jest widoczna i nie jest w trybie otoczenia. Uwaga: ze względu na obciążenie pamięci dostawcy widżetów synchronicznych mogą mieć ograniczone możliwości.

  • Zmiany PendingIntentTapListener zostaną prawdopodobnie cofnięte, ponieważ rozwiązaliśmy podstawowy problem (nie można uruchomić tarczy zegarka przez 5 sekund po naciśnięciu przycisku głównego).

Zmiany w interfejsie API

  • ComplicationData.isCached zostało zmienione na tapActionLostDueToSerialization, co jest przydatne przy określaniu, czy slot funkcji dodatkowych powinien być renderowany inaczej, aby sygnalizować, że nie można go kliknąć. (I6de2f)
  • Dodano ComplicationDataTimeline do wear-complication-data-source. Możesz użyć tej funkcji, aby przesłać sekwencję ComplicationData z ograniczonym czasem wyświetlania, która zostanie dostarczona na tarczę zegarka. Możesz ją zapisać w pamięci podręcznej i zaktualizować automatycznie. Na przykład prognoza pogody na dziś w różnych godzinach lub kilka nadchodzących wydarzeń w kalendarzu. Interfejs ComplicationRequestListener został rozszerzony o nową metodę onComplicationDataTimeline, która umożliwia zwracanie tych danych. Do zawieszania usług źródeł danych służy nowy moduł SuspendingTimelineComplicationDataSourceService w języku Kotlin. (Idecdc)
  • Dodano PendingIntentTapListener i WatchFaceControlClient.getPendingIntentForTouchEvent. Może to pomóc tarczom zegarka, które muszą uruchamiać intencje w odpowiedzi na kliknięcia, w ominięciu problemu, w którym framework blokuje uruchamianie nowych działań przez 5 sekund po naciśnięciu przycisku głównego. (I98074)
  • Wprowadziliśmy pamięć podręczną ComplicationData dla każdej tarczy zegarka. Ma to na celu umożliwienie tarczy zegarka wyświetlania ostatnich znanych wartości danych widżetów po załadowaniu, dopóki system nie zaktualizuje ich. 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 elementy podglądu w pamięci podręcznej były renderowane inaczej, ponieważ tapAction nie może być przechowywane w pamięci podręcznej i będzie null w elementach podglądu w pamięci podręcznej. (I404b0)
  • Identyfikator instancji tarczy jest teraz dostępny na stronie WatchState.watchFaceInstanceId. W przypadku większości tarcz zegarków nie jest to konieczne, ale jeśli tarcza ma stan, który nie jest zapisany w schemacie, to właśnie ten klucz służy do identyfikacji wystąpienia tarczy. Aby to umożliwić, możesz teraz podać identyfikator, gdy dzwonisz do WatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98)
  • Rozszerzone DefaultComplicationDataSourcePolicy z możliwością ustawienia domyślnego ComplicationTypes dla dostawcy podstawowego, dodatkowego i awaryjnego. Właściwość ComplicationSlot.defaultDataSourceType została wycofana. (If0ce3)
  • Wartość ComplicationSlot.configExtras może teraz ulec zmianie i może być aktualizowana przed wywołaniem funkcji EditorSession.openComplicationDataSourceChooser(). (I6f852)
  • Dodano WatchFace.setComplicationDeniedDialogIntent i setComplicationRationaleDialogIntent. Te intencje są uruchamiane, aby wyświetlić okno z uzasadnieniem przed poproszeniem o uprawnienia dotyczące widżetów oraz kolejne okno wyjaśniające, że potrzebne jest uprawnienie do korzystania z widżetów, gdy użytkownik próbuje je edytować, a uprawnienia zostały odrzucone (okno wyboru dostawcy nie otworzy się, więc potrzebne jest okno z prośbą o uprawnienia). (I3a29c)
  • Właściwości UserStyleSchemaComplicationSlots można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarcz zegarków i przyspiesza zapytania WatchFaceMetadataClient, ponieważ nie trzeba już łączyć się z usługą, aby pobrać metadane. (I85bfa)
  • Dodano InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent, aby klient mógł sprawdzić, czy tarcza zegarka obsługuje getPendingIntentForTouchEvent. (I0b917)
  • Usługi WatchFaceMetadataClientListenableWatchFaceMetadataClient nie są już eksperymentalne. Można ich używać do efektywnego uzyskiwania metadanych tarczy zegarka, w miarę możliwości bez otwierania złącza tarczy. (Ibb827)
  • Dodaliśmy obsługę dostawców widżetów synchronicznych, w których przypadku widżet jest aktualizowany częściej niż zwykle, nawet do 1 raza na sekundę, gdy tarcza zegarka jest widoczna i nie jest w trybie otoczenia. Aby korzystać z tej funkcji, dostawca musi dodać nowy tag metadanych androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS w pliku manifestu i zastąpić tag onSynchronousComplicationRequest. W zależności od charakteru źródła danych może być też konieczne zastąpienie wartości onStartSynchronousComplicationRequestsonStopInteractiveComplicationRequests, aby otrzymywać powiadomienia o tym, kiedy komplikacja wchodzi w tryb interaktywny i z niego wychodzi. (I8fe9d)

Wersja 1.0

Wersja 1.0.1

9 lutego 2022 r.

androidx.wear.watchface:watchface-*:1.0.1 został zwolniony. Wersja 1.0.1 zawiera te zatwierdzenia.

Poprawki błędów

  • Poprawiono błąd polegający na tym, że element PhotoImageComplicationData tapAction nie był prawidłowo obsługiwany (I1cc30).

Wersja 1.0.0

1 grudnia 2021 r.

androidx.wear.watchface:watchface-*:1.0.0 został zwolniony. Wersja 1.0.0 zawiera te zatwierdzenia.

Najważniejsze funkcje wersji 1.0.0

Pakiet androidx.wear.watchface to nowa zalecana biblioteka do tworzenia tarcz zegarka na Wear OS. Zawiera ona wiele nowych funkcji w porównaniu ze starą biblioteką pomocy dotyczącą urządzeń noszonych.

  • Biblioteka obsługuje bezpośrednio stylizację użytkownika (np. zmianę palety kolorów, stylu wskazówek zegarka, wyglądu oznaczeń godzin itp. – patrz androidx.wear.watchface.style). Dzięki temu łatwiej jest teraz opracować edytor tarczy zegarka za pomocą pakietu androidx.wear.watchface.editor. Tarczę zegarka można edytować w aplikacji towarzyszącej systemu bez konieczności pisania dodatkowego kodu.
  • Sprawdzone metody są wbudowane. Biblioteka automatycznie wygenerowała etykiety treści dla czytników ekranu na potrzeby widżetów (możesz też dodać własne), a częstotliwość wyświetlania klatek automatycznie spada, gdy poziom naładowania baterii jest niski i nie ładuje się ona, aby wydłużyć czas pracy na baterii.
  • Do tworzenia tarcz zegarka potrzeba mniej kodu, zwłaszcza w przypadku widżetów, w których przypadku wiele standardowych elementów zostało przeniesionych do biblioteki.

Poprawki błędów

  • Rozwiązanie EditorSession.userStyle.compareAndSet (I6f676)
  • Naprawiono problem z bardzo krótkimi opóźnieniami tarczy zegarka (Iffb97).
  • Przekazywanie InteractiveWatchFaceImpl.onDestroy do wątku interfejsu (I83340)
  • Rozwiązanie kilku problemów z odbiornikami transmisji (I7d25f)

Wersja 1.0.0-rc01

3 listopada 2021 r.

androidx.wear.watchface:watchface-*:1.0.0-rc01 został zwolniony. 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)

  • Zapewnienie prawidłowej kolejności zapisywania ustawień bezpośredniego rozruchu. Chcemy, aby funkcja writeDirectBootPrefs zawsze była wykonywana po initStyleAndComplications, ponieważ opóźnienie inicjowania wątku interfejsu użytkownika może spowodować opóźnienie inicjowania wątku interfejsu użytkownika (37650ac).

  • Upewnij się, że wywołano metodę Renderer.onDestroy. W przypadku, gdy mechanizm renderowania został utworzony, ale nie udało się zainicjować WF, a wywołano metodę Engine.onDestroy, musimy wywołać metodę Renderer.onDestroy. (f9952dc)

  • Optymalizacja/poprawka do isBatteryLowAndNotCharging. Ta poprawka przesuwa początkową konfigurację isBatteryLowAndNotCharging do wcześniejszego miejsca, co oznacza, że można ją wykonać równolegle z createWatchFace. Dodatkowo teraz nasłuchujemy zdarzeń ACTION_POWER_DISCONNECTED. (ddffd80

  • InteractiveWatchFaceClientImpl.isConnectionAlive ma być fałszem po zamknięciu (ab9774e)

Wersja 1.0.0-beta01

27 października 2021 roku

androidx.wear.watchface:watchface-*:1.0.0-beta01 został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.

Wersja 1.0.0-alpha24

13 października 2021 r.

androidx.wear.watchface:watchface-*:1.0.0-alpha24 został zwolniony. 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. Oznacza to, że nie możesz uwzględnić tej biblioteki ani żadnej poprzedniej wersji alfa wear:watchface:watchface-complications-data, ponieważ pojawią się błędy dotyczące duplikatów zajęć. (I97195)
  • Metoda Renderer.dump została przemianowana na Renderer.onDump i oznaczona adnotacją @UiThread. (I44845)
  • Nazwa InteractiveWatchFaceClient.addWatchFaceReadyListener została zmieniona na addOnWatchFaceReadyListener, a nazwa removeWatchFaceReadyListener na removeOnWatchFaceReadyListener. (I48fea)
  • Zmienne EditorSession getComplicationsPreviewDatagetComplicationsDataSourceInfo nie są już zawieszonymi funkcjami, lecz właściwościami StateFlow<>, których wartość jest początkowo pusta. Z klasy podstawowej ListenableEditorSession zostały usunięte obiekty getListenableComplicationPreviewDatagetListenableComplicationsProviderInfo, a w ich miejsce dodano nowe obiekty StateFlow<>. Jeśli chcesz odsłuchać zmiany w kodzie Java, możesz użyć narzędzia androidx.lifecycle.FlowLiveDataConversions.asLiveData do konwersji na LiveData<>. (Ic5483)

Wersja 1.0.0-alpha23

29 września 2021 r.

androidx.wear.watchface:watchface-*:1.0.0-alpha23 został zwolniony. Wersja 1.0.0-alpha23 zawiera te commity.

Nowe funkcje

Biblioteka tarcz zegarka jest teraz jedną grupą bibliotek, więc 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 w interfejsie API

  • Przekaż osobne biblioteki androidx.wear tarcz zegarka i komplikacji do grupy bibliotek androidx.wear.watchface. (b25f3c0)
  • Dodano EditorRequest.canWatchFaceSupportHeadlessEditing, aby poinformować klienta, czy edytor tarczy zegarka obsługuje edycję bez okna. Pamiętaj, że w tym przypadku mogą wystąpić fałszywie negatywne wyniki, ponieważ obsługa została dodana w wersji asop/1756809. W przyszłości funkcja będzie zwracać prawidłową wartość dla wszystkich przyszłych tarcz zegarka. (ca55590)
  • Renderer ma teraz metodę dump(), która może zostać zastąpiona, aby dodać niestandardowe dane do informacji wygenerowanych przez ABD shell dumpsys activity service WatchFaceService. (95235f9)
  • Metoda InteractiveWatchFaceClient.addWatchFaceReadyListener teraz najpierw określa wykonawcę. (563ac2f)
  • Metoda StateFlowCompatHelper została usunięta. Zamiast niej należy używać asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
  • Zmiana wartości CurrentUserStyleRepository.userStyle nie jest już możliwa. (I44889)
  • Interfejs WatchFaceReadyListener został przemianowany na OnWatchFaceReadyListener. (Ic12a9)

Poprawki błędów

  • InteractiveInstanceManager.deleteInstance do wywołania onDestroy. Jest to konieczne, aby zapewnić usunięcie elementów nieużywanych przez InteractiveWatchFaceImpl.(fce4af8, b/199485839)