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. – aby można było instalować nowe tarcze zegarka 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
15 stycznia 2025 r. 1.2.1 - - 1.3.0-alpha05

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. Daj nam znać, jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, 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-alpha05

15 stycznia 2025 r.

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

Nowe funkcje

Tarcze zegarka zwykle umożliwiają użytkownikowi wybór kolorów za pomocą ListUserStyle. Chociaż to działa, wymaga wysyłania ikon przez Bluetooth do edytora towarzyszącego, co jest niewydajne, więc wprowadziliśmy ColorUserStyleSetting, gdzie ładunek to lista co najmniej jednego koloru na styl, która ma znacznie bardziej zwarty format transmisji.

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

Zmiany w interfejsie API

  • Klasy UserStyleSettingUserStyleOption mają teraz kreatory, które są zalecanym sposobem ich tworzenia. (Iacd03)
  • Obsługa przekazywania dodatkowych informacji w funkcji ComplicationData. Jest on przeznaczony dla producentów urządzeń oryginalnych, którzy kontrolują zarówno dostawcę widżetu, jak i tarczę zegarka, na której ma on być wyświetlany. Ustawienie dodatku wymaga uprawnienia com.google.android.wearable.permission.COMPLICATION_EXTRAS o wysokich uprawnieniach. (I4e3b2)
  • Tarcze zegarka zwykle umożliwiają użytkownikowi wybór kolorów za pomocą ListUserStyle, z ikoną dla każdego ListOption. Schematy UserStyle są wysyłane przez Bluetooth, dlatego ważne jest, aby ich rozmiar był jak najmniejszy. Może to być problemem, jeśli ze względu na wszystkie te ikony jest wiele opcji kolorów. Aby ułatwić Ci to zadanie, dodaliśmy opcję ColorUserStyleSetting, która zawiera listę kolorów zamiast ikony, co jest znacznie bardziej kompaktowe. (Ib542e)
  • ColorUserStyleSettingColorOption wymagają interfejsu API 34. (I8771d)

Poprawki błędów

  • Ta biblioteka korzysta teraz z adnotacji JSpecify dotyczących nullowości, które są używane w ramach typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie: -Xjspecify-annotations=strict, -Xtype-enhancement-improvements-strict-mode (Ifd363, b/326456246).

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ę umożliwiającą zrobienie zaktualizowanego zrzutu ekranu, gdy tylko zmieni się konfiguracja systemu (np. lokalizacja) za pomocą nowego 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 przy użyciu AGP 8.1 lub nowszego (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 używamy równości referencyjnej do porównywania wartości best i selectedData, ponieważ operator równości jest kosztowny. (446b00)

Zmiany w interfejsie API

  • Dodaliśmy interfejs API dynamiczny GoalProgressComplicationData bez możliwości korzystania z awaryjnego rozwiązania. (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 commity.

Nowe funkcje

  • Obiekty WatchFaceServices można inicjować równolegle, dlatego powinny być bezstanowe. Aby to umożliwić, dodaliśmy obiekt StatefulWatchFaceService, w którym dodatkowy obiekt zdefiniowany przez użytkownika i utworzony przez createExtra() jest przekazywany do wszystkich zastąpień wywoływanych podczas inicjalizacji.
  • 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 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ę określa, co się dzieje, gdy system jest przywracany z kopii zapasowej dla źródła danych widżetu za pomocą METADATA_KEY_DATA_SOURCE_CONFIG_ACTION. Domyślnie system zakłada, że usługa źródła danych 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 RangedValueComplicationData, z tym że służy do obliczania postępu w realizacji celu, w którym wartość minimalna jest domyślnie równa 0, a wartość dopuszczalna 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. Dane te 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 szczególne 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

  • Użytkownik SuspendingComplicationDataSourceService#onDestroy jest teraz dostępny. 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 owijarki 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 dystansu, kalorii i pięter na dzień. 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)
  • Metody 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 właściwości (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łowych InteractiveWatchFaceClient, HeadlessWatchFaceClient i EditorSession. Zazwyczaj będzie 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)
  • Do metod DynamicTypeEvaluator.bind dodano wykonawcę. (I346ab)
  • Do metody BoundDynamicType dodaliśmy metodę startEvaluation, aby wywołać ocenę po zwią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ą 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ż podczas edycji ustawienia są wysyłane przez Bluetooth, a pasmo Bluetooth jest ograniczone.

Zmiany w interfejsie API

  • Do parametrów GlesRendererGlesRenderer2 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 zgłaszanych 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 starych tarcz zegarka. (I24c89)
  • Postanowiliś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ń platformy komplikacji, ale nie jest to jeszcze możliwe. Zachęcamy do śledzenia naszych informacji.
  • 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 tarczy 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 opcji dla czytników 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 przejęte przez obiekt towarzyszący RangedValueComplicationData i przemianowane na TYPE_UNDEFINED, TYPE_RATING oraz 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 do znacznika RangedValueComplicationData.
  • W przypadku Androida T dodaliśmy do ComplicationData wartości ComplicationPersistencePolicysetCachePolicy, które umożliwiają dostawcy określenie, czy komplikacja ma być zachowana (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, dodając do nich adnotacje @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 w 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 commity.

Nowe funkcje

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

Zmiany w interfejsie API

  • Wycofanie środowiska wykonawczego 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 zostanie zamknięty, 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 zaktualizowany obraz 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 zawiera 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 dodaliśmy parametr PreviewImageUpdateRequestedListener jako opcjonalny parametr do parametru getOrCreateInteractiveWatchFaceClient, 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 ustawić tarcza zegarka. Należy ją zaktualizować w sposób odpowiedni do zmian w 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. 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 (oraz eksperymentalne DiscreteRangedValueComplicationData, GoalProgressComplicationData i WeightedElementsComplicationData) 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)
  • Zmień PreviewImageUpdateRequestedListener na Consumer<> (Ia875d)
  • Zastąp niestandardowy typ pojedynczej abstrakcyjnej metody (SAM) OnWatchfaceColorsListener ogólnym typem SAM w Javie (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 aktywnie pracujemy. Nowe formaty mogą ulec zmianie bez powiadomienia. Obecnie nie ma obsługi w rendererze CanvasComplicationDrawable.
  • 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), elementy ComplciationSlots mają 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, z tym że ma zakres i wartość całkowitą.RangedValueComplicationData Wprowadziliśmy też eksperymentalną funkcję GoalProgressComplicationData, która jest podobna do funkcji RangedValueComplicationData, ale służy do określania postępów w realizacji celu, w którym 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 wagi i koloru) oraz opcjonalnego tekstu, tytułu lub obrazu. Dane te 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)
  • Eksperymentalny element ColorRamps używany opcjonalnie przez elementy 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 renderowane w postaci równych kroków koloru. (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 parametrze 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 drawSegmented. Sygnalizuje to procesorom renderowania, że wskaźnik wartości zakresu ma być narysowany 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. Zdecydowanie zalecamy zaktualizowanie wersji 1.1.0.

Poprawki błędów

  • Inicjalizacja tarczy zegarka jest asynchroniczna, więc jeśli widżet zostanie odebrany, zanim tarcza będzie gotowa, zostanie 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ł pewien przedział czasu, w którym komplikacje były nadal umieszczane na pendingInitialComplications i ignorowane. Problem został już rozwiązany. Ta poprawka naprawia 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 – mamy nadzieję – występuje tylko teoretycznie, gdy trzeba scalić wiele pendingInitialComplications. (0d03ba3)

  • Rozwiązanie potencjalnego utknięcia w blokadzie w funkcji InteractiveInstanceManager, w której funkcja getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance blokowała blokadę dłużej niż to było konieczne. Zwykle engine.setUserStyle jest szybka, ale jeśli z jakiegoś powodu tak się nie stanie, może dojść do blokady semaforycznej lub zawieszenia aplikacji. Ta poprawka usuwa z blokady zbędne operacje, eliminując tym samym możliwość wystąpienia blokady warunkowej (5a2adca).

  • Rozwiąż kilka problemów, które spowodowały, że WatchFaceService nie zostało usunięte. 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 w interfejsie edytora. Możesz teraz określić oddzielne ikony do wykorzystania na tarczy zegarka i w edytorach towarzyszących.
  • 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 na potrzeby korzystania z edytorów.
  • Eksperymentalna obsługa stylów „flavors”, czyli wyselekcjonowanej kolekcji stylów, która będzie widoczna w edytorze towarzyszącym.
  • Podczas edycji 2 egzemplarzy tarczy zegarka można teraz udostępniać 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 do przekazania na tarczę zegarka. Dane te mogą być przechowywane w pamięci podręcznej i automatycznie aktualizowane. Może to być na przykład prognoza pogody na dziś w różnych porach dnia lub wiele 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. Eksperymentowanie z komplikacją krawędzi BoundingArc trwa nadal, a komplikacja jest dostępna w wersji drawHighlight, ale nie zalecamy jej używania w tej chwili.

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 asyncjonalnym BaseEditorSession.close polega na tym, że ComplicationDataSourceInfoRetriever jest zwalniany zbyt późno, co powoduje spamowanie ostrzeżeń w logcat. Prawdopodobnie był to nieszkodliwy spam, ale spam z 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. Pozwala to 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 testów NPEs, gdy dostęp był uzyskiwany do nieistniejących wymaganych pól. (55ffdf5)
  • Usunęliśmy błąd, który powodował, że setComplicationData usuwało 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 podczas otrzymywania 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 pliku XML WatchFaceService, który był wczytywany z niewłaściwego pakietu (dfa06f3).
  • Format szablonu szkiców korzysta teraz z pakietu wewnętrznego. Nie chcemy, aby elementy zastępcze powodowały błędy w dotychczasowych tarczach 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 niepotrzebnie 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łany częściowo 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 NoDataComplication o opcjonalne dane zastępcze ComplicationData i dodaliśmy ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER, które można używać tylko w kontekście danych zastępczych 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ż podstawowy problem został rozwiązany w ramach, więc wszystkie powiązane interfejsy API zostały usunięte. Aby PendingIntents została uruchomiona, nie musisz nic robić na tarczy zegarka, nawet jeśli przycisk Home został niedawno naciśnięty. (I1f2e8)
  • Dodaliśmy parametr RendererParameters.isForScreenShot, który będzie miał wartość true, jeśli renderowanie dotyczy 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 uprawnienie o wysokim priorytecie com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE. (Ie6b23)
  • Zaktualizowano opcjonalność w jądrze i w bibliotece zgodności aplikacji, aby dopasować ją do wersji DP2 Tiramisu (I0cbb7).

Poprawki błędów

  • Teraz 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. Nigdy nie było planowane, aby można je było ustawiać, ponieważ prowadziłoby to do nieokreślonego zachowania. (I0d9e7)
  • Dodaliśmy do klasy ComplicationSlot.Builder metody setNameResourceIdsetScreenReaderNameResourceId (które odwołują się do zasobów ciągu tekstowego) oraz odpowiadające im metody gettera w klasie androidx.wear.watchface.client.ComplicationSlotState. Dzięki temu system może pobierać nazwy ComplicationSlots do wykorzystania w edytorach i czytnikach 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)
  • Naprawiono 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 miejscach, co ułatwia kodowi klienta wychwytywanie błędów z tarczy zegarka. (I78785)
  • Klasy ComplicationData i jej 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. To upraszcza 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 różnymi opcjami stylizacji zdefiniowanymi 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 szarej 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żesz ją zapisać w pamięci podręcznej i automatycznie aktualizować. Może to być na przykład prognoza pogody na dziś w różnych porach dnia lub wiele nadchodzących wydarzeń w kalendarzu. Interfejs ComplicationRequestListener został rozszerzony o nową metodę onComplicationDataTimeline, która umożliwia zwracanie tych danych.

  • DefaultComplicationDataSourcePolicy została rozszerzona, aby umożliwić określenie 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: dostawcy elementów synchronicznych mogą mieć ograniczone możliwości ze względu na obciążenie pamię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

  • Wartość ComplicationData.isCached została zmieniona na tapActionLostDueToSerialization, która jest bardziej przydatna przy określaniu, czy miejsce na widżet powinno być renderowane 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 ograniczeniem czasowym na tarczę zegarka. Możesz ją zapisać w pamięci podręcznej i automatycznie aktualizować. Może to być na przykład prognoza pogody na dziś w różnych porach dnia lub wiele 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ł Kotlina SuspendingTimelineComplicationDataSourceService. (Idecdc)
  • Dodano użytkowników 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 wyświetlania ostatnich znanych wartości danych po załadowaniu, dopóki system nie zaktualizuje ich. Dostępna jest nowa metoda interfejsu API WatchFaceControlClient.hasComplicationCache przeznaczona dla producentów OEM. Może to wpływać na strategię systemu dotyczącą wysyłania widżetów na tarczę zegarka. Dodatkowo ComplicationData ma właściwość isCached i zalecamy, aby elementy składowe z poziomu 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 takim elemencie. (I404b0)
  • Identyfikator instancji tarczy zegara jest teraz dostępny w sekcji 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 instancji 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 dostawcy systemu. 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 użytkowników 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 tarczy zegarka 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 wiązadła 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ć konieczne zastąpienie wartości onStartSynchronousComplicationRequestsonStopInteractiveComplicationRequests, aby otrzymywać powiadomienia o tym, kiedy widżet 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

  • Naprawiono 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 kilka 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 pakietowi androidx.wear.watchface.editor możesz teraz łatwiej tworzyć edytor tarczy zegarka, a tarczę zegarka można edytować z 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 tarczy 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).
  • Przesyłanie InteractiveWatchFaceImpl.onDestroy w wątku interfejsu użytkownika (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 migrację przepływu. (087cf9e)

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

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

  • Optymalizacja/poprawka do isBatteryLowAndNotCharging. Ta poprawka przesuwa początkową konfigurację funkcji isBatteryLowAndNotCharging do wcześniejszego momentu, co oznacza, że można ją wykonać równolegle z metodą createWatchFace. Dodatkowo teraz nasłuchujemy zdarzenie 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

  • Zajęcia 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ż funkcjami zawieszania, lecz właściwościami StateFlow<>, których wartość jest początkowo pusta. Z klasy podstawowej ListenableEditorSession usunięto 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, dlatego biblioteki zostały przeniesione. Musisz zaktualizować importy Gradle w ten sposób:

Stary Nowość
androidx.wear:wear-complications-data androidx.wear.watchface:watchface-complications-data
androidx.wear:wear-complications-data-source androidx.wear.watchface:watchface-complications-data-source
androidx.wear:wear-watchface androidx.wear.watchface:watchface
androidx.wear:wear-watchface-complications-rendering androidx.wear.watchface:watchface-complications-rendering
androidx.wear:wear-watchface-client androidx.wear.watchface:watchface-client
androidx.wear:wear-watchface-client-guava androidx.wear.watchface:watchface-client-guava
androidx.wear:wear-watchface-data androidx.wear.watchface:watchface-data
androidx.wear:wear-watchface-editor androidx.wear.watchface:watchface-editor
androidx.wear:wear-watchface-editor-guava androidx.wear.watchface:watchface-editor-guava
androidx.wear:wear-watchface-guava androidx.wear.watchface:watchface-guava
androidx.wear:wear-watchface-style androidx.wear.watchface:watchface-style

Zmiany 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 interfejsu. Pamiętaj, że w tym przypadku mogą wystąpić fałszywie negatywne wyniki, ponieważ obsługa została dodana w ramach asop/1756809. W przyszłości funkcja zwróci jednak 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)
  • Wartość CurrentUserStyleRepository.userStyle nie jest już zmienna. (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 InteractiveWatchFaceImpl przez garbage collectora.(fce4af8, b/199485839)