Tarcza zegarka Wear

Tworzenie aplikacji na zegarki z Wear OS by Google.

Uwaga: Format tarczy zegarka jest wymagany w przypadku tarcz zegarka, które mają być instalowane na urządzeniach z preinstalowanym systemem Wear OS 5 lub nowszym, oraz w przypadku wszystkich nowych tarcz zegarka publikowanych w Google Play.

Od stycznia 2026 r. format tarczy zegarka będzie wymagany, aby można było instalować tarcze zegarka na wszystkich urządzeniach z Wear OS.

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

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

Deklarowanie zależności

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

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

Groovy

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

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

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

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

Kotlin

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

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

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

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

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

Opinia

Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Aby oddać głos na istniejący problem, kliknij przycisk gwiazdki.

Tworzenie nowego problemu

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

Wersja 1.3

Wersja 1.3.0-beta01

17 grudnia 2025 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.3.0-alpha07

23 kwietnia 2025 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.3.0-alpha06

26 marca 2025 r.

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

Nowe funkcje

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

Wersja 1.3.0-alpha05

15 stycznia 2025 r.

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

Nowe funkcje

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

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.3.0-alpha04

18 września 2024 r.

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

Nowe funkcje

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

Poprawki błędów

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

Wersja 1.3.0-alpha03

17 kwietnia 2024 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.3.0-alpha02

3 kwietnia 2024 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.3.0-alpha01

7 lutego 2024 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.2

Wersja 1.2.1

24 stycznia 2024 r.

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

Poprawki błędów

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

Wersja 1.2.0

29 listopada 2023 r.

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

Ważne zmiany od wersji 1.1.0

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

Wersja 1.2.0-rc01

18 października 2023 r.

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

Wersja 1.2.0-beta02

6 września 2023 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.2.0-beta01

23 sierpnia 2023 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.2.0-alpha09

21 czerwca 2023 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.2.0-alpha08

19 kwietnia 2023 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

  • Przekazywanie klasy @Deprecated do usługi (I882d1, b/271441831)
  • Nazwa parametru wartości dla Enum.valueOf została zmieniona (Ia9b89)
  • Więcej wyjątków zgłaszanych przez enum valueOf (I818fe)
  • Usunęliśmy renderWatchFaceToSurface na rzecz createRemoteWatchFaceView, która jest oparta na SurfaceControlViewHost i umożliwia wywołującemu osadzenie widoku z tarczy zegarka, który jest renderowany, gdy klient wywołuje RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • Dodaliśmy użytkownika renderWatchFaceToSurface do InteractiveWatchFaceClient, HeadlessWatchFaceClient i EditorSession. Zwykle jest to bardziej wydajne niż renderowanie do mapy bitowej. (Ieacad)
  • Nazwa ObservableStateStore została zmieniona na StateStore. (Ieb0e2)
  • Zamiast argumentów konstruktora dodano DynamicTypeEvaluator.Builder, aby umożliwić używanie większej liczby argumentów opcjonalnych, w tym ObservableStateStore, który domyślnie jest teraz pustym sklepem. (I6f832)
  • Zmieniono kolejność parametrów w funkcji DynamicTypeEvaluator. (Ic1ba4)
  • Do metod DynamicTypeEvaluator.bind dodano wykonawcę. (I346ab)
  • Dodaliśmy metodę startEvaluation do BoundDynamicType, aby wywoływać ocenę po powiązaniu typu dynamicznego. (I19908)
  • Dostawcy widżetów z uprawnieniami com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE mogą rejestrować metadane androidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, które zastępują android.support.wearable.complications.SUPPORTED_TYPES w przypadku bezpiecznych tarcz zegarka. (Id1c73)
  • Zmieniliśmy nazwę CustomValueUserStyleSettings2 na LargeCustomValueUserStyleSettings. (Ic17ac)

Poprawki błędów

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

Wersja 1.2.0-alpha07

22 lutego 2023 roku

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

Nowe funkcje

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

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

Zmiany w interfejsie API

  • Do funkcji GlesRendererGlesRenderer2 dodaliśmy opcjonalny parametr eglContextAttribList, który umożliwia ustawienie wartości EGL14.EGL_CONTEXT_CLIENT_VERSION przekazywanej do funkcji EGL14.eglCreateContext. (I2a83e)
  • Przenieśliśmy biblioteki tarcz zegarka do androidx.core.util.Consumer zamiast java.util.function.Consumer. (I273f5)
  • Więcej wyjątków zgłaszanych przez funkcje dostępu do właściwości KT (Iff9d9)
  • Dodaliśmy InteractiveWatchFaceClient.isComplicationDisplayPolicySupported, aby klient mógł określić, czy musi emulować obsługę w imieniu starych tarcz. (I24c89)
  • Zdecydowaliśmy, że isForSafeWatchFace powinno być stanem trójstanowym IntDef. (Ief2f7)
  • W przypadku Androida T wprowadziliśmy ComplicationRequest.isForSafeWatchFace, który jest przeznaczony do użytku przez producentów OEM i wymaga com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. W przypadku źródeł danych w obrazie systemu ta funkcja zwraca wartość „prawda”, jeśli żądana tarcza zegarka znajduje się na liście bezpiecznych tarcz zegarka określonej przez źródło danych w jego 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.

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

Nowe funkcje

  • Pracujemy nad dodaniem obsługi powiązań platformy widżetów, ale nie jest ona jeszcze gotowa do użycia. Bądź na bieżąco!
  • Dodaliśmy obsługę XML ComplicationSlot w przypadku nowych typów komplikacji: GOAL_PROGRESS i WEIGHTED_ELEMENTS.

Poprawki błędów

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

Wersja 1.2.0-alpha05

7 grudnia 2022 r.

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

Nowe funkcje

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

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

Zmiany w interfejsie API

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

Wersja 1.2.0-alpha04

9 listopada 2022 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

  • GoalProgressComplicationData, WeightedElementsComplicationData i ColorRamp nie są już eksperymentalne. (Ica9e2)
  • ComplicationPersistencePolicyComplicationDisplayPolicy są teraz prawidłowo oznaczone jako interfejsy API T. (I31d88)
  • Wycofany konstruktor ComplicationSlotOverlay ma teraz DeprecationLevel.WARNING, co umożliwia ponowne wywoływanie go z javy. (Ib308c)
  • Rozwiązaliśmy problemy ze zgodnością z Java w przypadku ComplicationRequestListener, CanvasComplication, ComplicationTapFilterInteractiveWatchFaceClient, dodając do nich adnotację @JvmDefaultWithCompatibility (Id94fc).
  • Usunęliśmy eksperymentalne funkcje ProtoLayoutComplicationDataListComplicationData. Historia dewelopera w przypadku tych funkcji była niejasna, ale mamy nadzieję, że w przyszłości do niej wrócimy. (I9df05)
  • Dodaliśmy ValueType z powrotem do RangedValueComplicationData. WeightedElementsComplicationData obsługuje teraz kolor tła. Usunęliśmy DiscreteRangedValueComplicationData, ponieważ jego funkcje są podzbiorem funkcji WeightedElementsComplicationData. (I6446c)

Poprawki błędów

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

Wersja 1.2.0-alpha03

5 października 2022 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.2.0-alpha02

21 września 2022 r.

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

Nowe funkcje

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

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

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.2.0-alpha01

10 sierpnia 2022 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1

Wersja 1.1.1

10 sierpnia 2022 r.

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

  • Ta wersja zawiera poprawki błędów, dlatego zalecamy użytkownikom wersji 1.1.0 jej zaktualizowanie.

Poprawki błędów

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

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

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

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

Wersja 1.1.0

15 czerwca 2022 r.

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

Ważne zmiany od wersji 1.0.0

Ulepszona edycja:

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

Ulepszone widżety:

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

Inne zmiany:

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

Wersja 1.1.0-rc01

18 maja 2022 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1.0-beta02

11 maja 2022 roku

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1.0-beta01

20 kwietnia 2022 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1.0-alpha05

6 kwietnia 2022 roku

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.1.0-alpha04

9 marca 2022 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1.0-alpha03

9 lutego 2022 r.

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

Zmiany w interfejsie API

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

Poprawki błędów

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

Wersja 1.1.0-alpha02

12 stycznia 2022 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

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

Wersja 1.1.0-alpha01

15 grudnia 2021 roku

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

Nowe funkcje

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

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

  • ComplicationData jest teraz buforowany, aby komplikacje mogły być wyświetlane natychmiast po wczytaniu. Czasami ComplicationData jest buforowany w pamięci przez system, a czasami jest serializowany przez biblioteki tarcz zegarka. Podczas serializacji powiązane działanie tapAction zostanie utracone.W takim przypadku funkcja ComplicationData.tapActionLostDueToSerialization zwróci wartość true, a tarcza zegarka powinna renderować element w inny sposób (np. w odcieniach szarości lub półprzezroczysty), aby wskazać, że nie można go kliknąć. System wyśle zaktualizowane ComplicationDatatapAction tak szybko, 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żna jej używać do dostarczania na tarczę zegarka sekwencji ComplicationData ograniczonych czasowo, które można buforować i automatycznie aktualizować. Na przykład prognoza pogody na dziś w różnych porach lub kilka nadchodzących wydarzeń z kalendarza. ComplicationRequestListener został rozszerzony o nową metodę onComplicationDataTimeline, której możesz użyć do zwracania tych danych.

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

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

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

Zmiany w interfejsie API

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

Wersja 1.0

Wersja 1.0.1

9 lutego 2022 r.

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

Poprawki błędów

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

Wersja 1.0.0

1 grudnia 2021 r.

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

Główne funkcje wersji 1.0.0

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

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

Poprawki błędów

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

Wersja 1.0.0-rc01

3 listopada 2021 r.

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

Poprawki błędów

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

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

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

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

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

Wersja 1.0.0-beta01

27 października 2021 roku

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

Wersja 1.0.0-alpha24

13 października 2021 r.

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

Zmiany w interfejsie API

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

Wersja 1.0.0-alpha23

29 września 2021 r.

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

Nowe funkcje

Biblioteka tarcz zegarka jest teraz jedną grupą bibliotek, w związku z czym biblioteki zostały przeniesione i musisz zaktualizować importy Gradle w ten sposób:

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

Zmiany w interfejsie API

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

Poprawki błędów

  • Wywołanie metody InteractiveInstanceManager.deleteInstance w celu wywołania metody onDestroy. Jest to konieczne, aby zapewnić usunięcie obiektu InteractiveWatchFaceImpl przez odśmiecanie pamięci.(fce4af8, b/199485839)