Noszenie tarczy zegarka

Twórz aplikacje na zegarki z Wear OS by Google.
Najnowsza aktualizacja Wersja stabilna Kandydat do publikacji Wersja Beta Wersja alfa
7 lutego 2024 r. 1.2.1 - - 1.3.0-alfa01

Deklarowanie zależności

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

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

Odlotowy

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

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

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

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

Kotlin

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

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

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

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

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

Opinia

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

Utwórz nowy numer

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

Wersja 1.3

Wersja 1.3.0-alfa01

7 lutego 2024 r.

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

Nowe funkcje

  • WatchFaceServices można zainicjować równocześnie, więc powinny być bezstanowe. Na potrzeby tej funkcji dodaliśmy StatefulWatchFaceService, w którym dodatkowy utworzony przez użytkownika element createExtra() jest przekazywany do wszystkich zastąpień wywoływanych podczas inicjowania.
  • GlesRenderer2 zawiera teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów do wypróbowania za pomocą eglChooseConfig.

Zmiany w interfejsie API

  • StatefulWatchFaceService obsługuje teraz zastąpienie wartości getComplicationSlotInflationFactory, do którego przekazywany jest zdefiniowany przez użytkownika dodatek utworzony przez createExtra(). (I82d9f)
  • Niektóre tarcze zegarka muszą udostępniać dane pomocnicze utworzone podczas createUserStyleSchema za pomocą innych metod inicjowania. Nie było lepszej alternatywy, dlatego WatchFaceServices dla deweloperów jest zwykle ustawiany jako stanowy. Jest to niebezpieczne, ponieważ równocześnie może być tworzonych wiele instancji, co może powodować błędy. Aby rozwiązać ten problem, wprowadziliśmy zasady StatefulWatchFaceService i StatefulWatchFaceRuntimeService, w których typ zdefiniowany przez użytkownika jest tworzony przez createExtra() i jest przekazywany do różnych metod tworzenia jako parametr. (If8a99)
  • Dodaliśmy getUserStyleFlavors do pakietu InteractiveWatchFaceClient, który jest przeznaczony przede wszystkim dla OEM. (I0f5d8)
  • GlesRenderer2 zawiera teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów do wypróbowania za pomocą eglChooseConfig. Dzięki temu możesz na przykład najpierw wypróbować konfigurację z antyaliasem, a w razie potrzeby zastąpić ją inną. (I1ba74)
  • Od Androida U funkcja SystemDataSources.DATA_SOURCE_HEART_RATE zostanie dodana do Wear OS. Gwarantujemy, że ten widżet będzie obsługiwać tylko widżety SHORT_TEXT. Zalecamy jednak, aby aplikacja ComplicationSlot akceptowała również SMALL_IMAGE, ponieważ OEM może zdecydować się na wyświetlanie skrótu do aplikacji związanej ze zdrowiem zamiast rzeczywistej wartości. (I34223)
  • Dodaliśmy aplikację METADATA_KEY_CONFIG_RESTORE_SUPPORTED, która od Androida U określa, co się stanie, gdy system zostanie przywrócony z kopii zapasowej źródła danych widżetu z METADATA_KEY_DATA_SOURCE_CONFIG_ACTION. Domyślnie system zakłada, że usługa źródła danych widżetu obsługuje tworzenie kopii zapasowych dowolnych danych konfiguracyjnych. Jeśli jednak tak się nie stanie, może dodać ustawienie metadanych METADATA_KEY_DATA_SOURCE_CONFIG_ACTION na wartość Fałsz, co spowoduje oznaczenie przedziału widżetu jako nieskonfigurowanego. (I6c505)

Wersja 1.2

Wersja 1.2.1

24 stycznia 2024 r.

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

Poprawki błędów

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

Wersja 1.2.0

29 listopada 2023 r.

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

Ważne zmiany od wersji 1.1.0

  • Dodaliśmy obsługę kilku nowych typów widżetów dostępnych na Androidzie T:
    • GoalProgressComplicationData, który jest podobny do RangedValueComplicationData, ale dotyczy postępu w realizacji celu, w którym domyślnie wartość minimalna wynosi 0, a wartość może być większa niż targetValue.
    • WeightedElementsComplicationData, który składa się z tablicy Elementów (pary wagi i koloru) oraz opcjonalnego tekstu, tytułu i obrazu. Te dane mogą być wyświetlane w formie wykresu kołowego, gdzie kolory muszą być istotne w danym kontekście, ponieważ zazwyczaj nie ma miejsca na widżety na renderowanie etykiet.
  • Dodaliśmy obsługę opcjonalnie ColorRanges w RangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasami lepiej użyć parametru ComplicationDataSource, aby określić kolory, np. gdy mają one określone znaczenie semantyczne. np. kolor od czerwonego do niebieskiego oznaczający temperaturę.
  • Prawie każdy typ zasobu ComplicationData obsługuje teraz SmallImages.
  • Dodaliśmy ComplicationDisplayPolicy, gdzie DO_NOT_SHOW_WHEN_DEVICE_LOCKED informuje zgodną tarczę zegarka, by nie wyświetlała widżetu, gdy urządzenie jest zablokowane.
  • Na podstawie Androida T OEM może określić, czy żądanie widżetu pochodzi z tarczy zegarka wymienionego na liście metadanych android.support.wearable.complications.SAFE_WATCH_FACES w pliku manifestu dostawcy przez ComplicationRequest#isForSafeWatchFace. Dostawca potrzebuje uprawnienia com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE, aby otrzymywać coś innego niż TargetWatchFaceSafety.UNKNOWN`.
  • Funkcja UserStyleFlavors jest teraz funkcją nieeksperymentalną.

Wersja 1.2.0-rc01

18 października 2023 r.

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

Wersja 1.2.0-beta02

6 września 2023 r.

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

Nowe funkcje

  • Restauracja SuspendingComplicationDataSourceService#onDestroy jest teraz otwarta. Uwaga: obsługa domyślnego widżetu pogodowego w systemie została usunięta.

Zmiany w interfejsie API

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

Wersja 1.2.0-beta01

23 sierpnia 2023 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

  • Dodaj domyślną aplikację pogodową dla widżetów. (Ia0994)
  • Ta poprawka dodaje tagi WatchFaceRuntimeService i WatchFaceControlClient.createWatchFaceRuntimeControlClient oraz opakowania z gujawą. Dodaliśmy obsługę czasu działania tarczy, czyli specjalnego rodzaju tarczy, która wczytuje definicję z innego pakietu. Obecnie Wear OS obsługuje tylko środowisko wykonawcze formatu tarczy zegarka z Androidem. (I2799f)
  • Ta poprawka jest kontynuacją normy aosp/2636578, w której zmieniamy nazwę wartości int, tak aby żaden kod zależny od WatchFaceType, CanvasType, TapType lub ComplicationsSlotBoundsType nie wymagał zmian. (I4098b)
  • Zaktualizowano pliki interfejsu API, aby dodać adnotacje do pomijania zgodności. (I8e87a, b/287516207)
  • Ta poprawka udostępnia stałe WatchFaceType w WatchFaceTypes, stałe CanvasType w CanvasTypes, stałe TapType w stałych TapTypes i ComplicationsSlotBoundsType w ComplicationsSlotBoundsType. (I3b85a, b/288750666)
  • System WatchFace.OverlayStyle jest używany w bardzo niewielkim stopniu i nie jest dobrze obsługiwany przez OEM, dlatego wycofujemy go z myślą o późniejszym usunięciu. (I7344a)

Wersja 1.2.0-alfa09

21 czerwca 2023 r.

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

Nowe funkcje

  • RangedValueComplicationData.Builder akceptuje teraz DynamicFloat, a nowa podklasa DynamicComplicationText jest dostępna jako podklasa ComplicationText. Oba modele mogą korzystać z wyrażeń dynamicznych, a także powiązań platform aktualizowane co 1 Hz na obsługiwanych urządzeniach z Wear 4.

Zmiany w interfejsie API

  • Dodano dynamiczne typy przebytego dystansu, dziennej liczby kalorii i pięter. Klucze dla źródeł stanu platformy znajdują się teraz w lokalizacji PlatformHealthSources.Keys (Ib7637)
  • Zaimplementuj aplikację PlatformDataProvider, aby otrzymywać informacje o tętnie i dziennej liczbie kroków. Interfejs SensorGateway został usunięty z publicznego interfejsu API. (I55b84)
  • Zmień nazwę StateEntryValue na DynamicDataValue i zaktualizuj interfejsy API stanu w taki sposób, aby używały interfejsu DynamicDataKey. (If1c01)
  • Dodaj AppDataKey, aby uzyskać dostęp do stanu przekazanego aplikacji; dodaj PlatformDataKey, aby uzyskać dostęp do danych platformy; dodaj obsługę przestrzeni nazw w StateStore. (I7985e)
  • Z: DynamicTypeEvaluator usunięto enable/disablePlatformSource metod. Osoba wywołująca powinna być odpowiedzialna za aktualizacje. (I78c6d)
  • Zezwalaj na ograniczanie rozmiaru powiązanych typów danych. (Ie2966)

Wersja 1.2.0-alfa08

19 kwietnia 2023 r.

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

Nowe funkcje

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

Zmiany w interfejsie API

  • Przenoszenie klasy @Deprecated do usługi (I882d1, b/271441831)
  • Zmieniono nazwę parametru wartości pola Enum.valueOf (Ia9b89)
  • Więcej zgłoszonych wyjątków od wartości enum (I818fe)
  • Usunęliśmy typ renderWatchFaceToSurface na rzecz createRemoteWatchFaceView, który jest oparty na SurfaceControlViewHost i umożliwia rozmówcy umieszczenie widoku z tarczy zegarka, który jest renderowany, gdy klient wywołuje metodę RemoteWatchFaceViewHost#renderWatchFace. (Ib311d)
  • Dodaliśmy renderWatchFaceToSurface do aplikacji InteractiveWatchFaceClient, HeadlessWatchFaceClient i EditorSession. Zwykle będzie to skuteczniejsze niż renderowanie na bitmapie. (Ieacad).
  • Nazwa usługi ObservableStateStore została zmieniona na StateStore. (Ieb0e2)
  • Dodano DynamicTypeEvaluator.Builder zamiast argumentów konstruktora, aby umożliwić więcej opcjonalnych argumentów, w tym argument ObservableStateStore, który teraz domyślnie przyjmuje pusty magazyn. (I6f832)
  • Zrefaktoryzowana kolejność parametrów w funkcji DynamicTypeEvaluator. (Ic1ba4).
  • Wykonawca został dodany do metod DynamicTypeEvaluator.bind. (I346ab)
  • Do interfejsu BoundDynamicType dodaliśmy metodę startEvaluation, która uruchamia ocenę po powiązaniu typu dynamicznego. (I19908)
  • Dostawcy widżetów z podwyższonymi 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ę grupy CustomValueUserStyleSettings2 na LargeCustomValueUserStyleSettings. (Ic17ac)

Poprawki błędów

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

Wersja 1.2.0-alfa07

22 lutego 2023 roku

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

Nowe funkcje

  • Na podstawie Androida T OEM może określić, czy żądanie widżetu pochodzi z tarczy zegarka wymienionego na liście metadanych android.support.wearable.complications.SAFE_WATCH_FACES w pliku manifestu dostawcy przez 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ż aplikacja z Androida T CustomValueUserStyleSetting2, która może pomieścić do 12,5 KB. Poprzedni limit w usłudze CustomValueUserStyleSetting wynosił 1 KB. Pomimo zwiększonych limitów rozmiaru, zalecamy deweloperom tarcz zegarka, aby ilość danych była niewielka, ponieważ podczas edytowania ustawienia są wysyłane przez Bluetooth, a przepustowość Bluetootha jest ograniczona.

Zmiany w interfejsie API

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

Wersja 1.2.0-alfa06

25 stycznia 2023 r.

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

Nowe funkcje

  • Cały czas pracujemy nad dodaniem obsługi widżetów związanych z platformami. Ta funkcja nie jest jeszcze gotowa. Więcej informacji już wkrótce.
  • Dodaliśmy obsługę XML ComplicationSlot dla nowych typów widżetów: GOAL_PROGRESS i WEIGHTED_ELEMENTS.

Poprawki błędów

  • Rozwiązano problem polegający na tym, że edytor tarcz zegarka nie był prawidłowo aktywowany na urządzeniach Samsung. (3b5987)
  • Usunięto błąd, który powodował, że widżety nie wyświetlały się prawidłowo podczas przełączania się między tarczą zegarka z wieloma ulubionymi. (B38ece)
  • Naprawiono błąd serializacji z wartością perOptionScreenReaderNames, który powodował awarie tarczy zegarka. (E9f466)

Wersja 1.2.0-alfa05

7 grudnia 2022 r.

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

Nowe funkcje

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

  • Ulepszamy obsługę czytnika ekranu w ListOption i ComplicationSlotsOption, dodając pole screenReaderName. Pamiętaj, że przed Androidem T to pole będzie ignorowane przez edytory towarzyszące.

Zmiany w interfejsie API

  • Do usług ListOption i ComplicationSlotsOption dodaliśmy nowe opcjonalne pole screenReaderName do wykorzystania przez edytorów – będzie ono ignorowane przez edytorów towarzyszących na urządzeniach przed Androidem T. (I75326)
  • W Androidzie T wiele elementów ComplicationSlotsUserStyleSettings jest teraz obsługiwanych w hierarchii stylów, o ile tylko jeden z nich może być w danym momencie aktywny. Dodaliśmy funkcję narzędziową findComplicationSlotsOptionForUserStyle do interfejsu UserStyleSchema, aby pomóc w znalezieniu aktywnego ComplicationSlotsOption (jeśli istnieje). (Ic2b06)
  • Element RangedValuesTypes został pobrany do obiektu towarzyszącego RangedValueComplicationData i jego nazwa została zmieniona na TYPE_UNDEFINED TYPE_RATING. Dodano nowy element TYPE_PERCENTAGE. (I55d02)
  • Zmieniliśmy nazwę eksperymentu DynamicFloat na FloatExpression i oznaczono go jako @hide. (Idf4f1).
  • Dodawanie adnotacji @JvmDefaultWithCompatibility (I8f206)

Wersja 1.2.0-alfa04

9 listopada 2022 r.

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

Nowe funkcje

  • W przypadku Androida T dodaliśmy obsługę 2 nowych typów widżetów: GoalProgressComplicationData i WeightedElementsComplicationData.
  • 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 wygląd, który może nie pasować do niektórych tarcz zegarka.
  • GoalProgressComplicationData dodaje obsługę wykresów kołowych i podobnych podziałów prostych danych.
  • Dodaliśmy opcjonalną obsługę języka ColorRamps w wersji RangedValueComplicationData.
  • W przypadku Androida T dodaliśmy do aplikacji ComplicationData ComplicationPersistencePolicy i setCachePolicy, które obecnie pozwalają dostawcy określić, czy widżet ma być trwały (tj. czy po ponownym uruchomieniu jest przechowywany w pamięci podręcznej). Większość widżetów nie wymaga konfigurowania ustawień pamięci podręcznej, ale może to naprawić narożne przypadki z nieaktualnymi danymi w przypadku niektórych często aktualizowanych widżetów (np. powikłań związanych z danymi dotyczącymi zdrowia). Dodaliśmy też ComplicationDisplayPolicy, w którym DO_NOT_SHOW_WHEN_DEVICE_LOCKED informuje zgodną tarczę zegarka, by nie wyświetlała widżetu, gdy urządzenie jest zablokowane. (Ic9574)

Zmiany w interfejsie API

  • GoalProgressComplicationData, WeightedElementsComplicationData i ColorRamp nie są już eksperymentalne. (Ica9e2)
  • Interfejsy ComplicationPersistencePolicy i ComplicationDisplayPolicy są teraz prawidłowo oznaczone jako interfejsy API T. (I31d88)
  • Przestarzały konstruktor ComplicationSlotOverlay ma teraz komponent DeprecationLevel.WARNING, który umożliwia ponowne wywołanie go z języka Java. (Ib308c)
  • Rozwiązaliśmy niektóre problemy z kompatybilnością z Javą w językach ComplicationRequestListener, CanvasComplication, ComplicationTapFilter i InteractiveWatchFaceClient przez dodanie do nich adnotacji @JvmDefaultWithCompatibility (Id94fc)
  • Usunęliśmy funkcje eksperymentalne ProtoLayoutComplicationData i ListComplicationData. Historia dewelopera tych treści była niejasna. Mamy nadzieję, że wrócimy do niej w przyszłości. (I9df05)
  • Dodaliśmy ValueType ponownie do listy RangedValueComplicationData. WeightedElementsComplicationData obsługuje teraz kolor tła. Usunęliśmy DiscreteRangedValueComplicationData, ponieważ jego funkcjonalność jest podzbiorem WeightedElementsComplicationData. (I6446c)

Poprawki błędów

  • Umieść isForScreenShot w polu równości i kodu skrótu. Sprawdź, czy onRenderParametersChanged ma prawidłową wartość isForScreenshot (I04a41)
  • Usunięto wycieki pliku WatchFaceControlService z klientów bez interfejsu graficznego. (E90e00)

Wersja 1.2.0-alfa03

5 października 2022 r.

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

Nowe funkcje

  • Brak nowych funkcji, ale naprawiliśmy kilka błędów w edytorze tarcz zegarka.

Zmiany w interfejsie API

  • Wycofano UserStyleSchema.userStyleSettings, ponieważ rootUserStyleSettings nie ma wersji eksperymentalnej (Ie96e3)
  • Przenieś rootUserStyleSettings z eksperymentu (I8d6b3)
  • Oznaczyliśmy aplikację WatchFaceColors jako eksperymentalną, ponieważ nie jest obsługiwany przez niektóre systemy (I6d75d)
  • Udostępnij DisconnectReasons w publicznym interfejsie API, aby działał z IntDef. (I791f8)

Poprawki błędów

  • Jeśli SysUI umiera, zamknij wszystkie otwarte w edytorze zegarka. Jeśli SysUI umiera i edytor tarczy zegarka nie zostanie zamknięty, tarcza zegarka może pozostać w niespójnym stanie, ponieważ system polega na obiekcie SysUI, aby zachować wszystkie zmiany stylu użytkownika.(ba762a
  • Naprawianie wycieku pamięci w ComplicationDataSourceInfoRetriever, w którym kontynuacja kohorty kotlin działała jako root i zachowywała aktywność edytora.(33ee06)

Wersja 1.2.0-alfa02

21 września 2022 r.

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

Nowe funkcje

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

  • Dodaliśmy również interfejs API dla tarcz zegarka, aby pokazać ich kolory systemowi, który na tej podstawie może wybrać swoją paletę kolorów. Uwaga: ta funkcja została wprowadzona w wersji eksperymentalnej w ramach kolejnych poprawek.

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

Zmiany w interfejsie API

  • Menedżer tapet może czasami odłączać się od silnika i tworzyć nowe. Dodano int definicję DisconnectReason i rozszerzono ClientDisconnectListener o nową metodę, która obejmuje właściwość DisconnectReason, która umożliwia detektorowi obserwowanie rozłączania silnika. (I45cce)
  • Do konstruktora ComplicationSlotOverlay dodano 2 opcjonalne parametry nameResourceId i screenReaderResourceId (I157e8)
  • Dodaliśmy otokę gujawy w przypadku nowego przeciążenia: getOrCreateInteractiveWatchFaceClient z PreviewImageUpdateRequestedListener. (Ic31f0)
  • Dodaliśmy Renderer.sendPreviewImageNeedsUpdateRequest, który przydaje się w przypadku tarcz zegarka spoza zakresu UserStyleSchema, który wpływa na wygląd (np. tarczy zegarka z obrazem tła do wyboru). Po stronie klienta dodaliśmy PreviewImageUpdateRequestedListener jako opcjonalny parametr do getOrCreateInteractiveWatchFaceClient, aby umożliwić obserwację tych żądań. (Iff44a)
  • Uprościliśmy interfejs API na potrzeby ujawniania właściwości WatchFaceColors. W mechanizmie renderowania dostępna jest teraz prosta właściwość o nazwie watchFaceColors, którą może ustawiać tarcza zegarka. W razie potrzeby należy ją zaktualizować w odpowiedzi na wszelkie zmiany stylu. Zamiast narzędzia WallpaperManager do obserwowania zmian kolorów dodaliśmy kolor OnWatchFaceColorsListener do aplikacji InteractiveWatchFaceClient. (I490bc)
  • Dodaliśmy klasę WatchFaceColors, która posiada 3 najbardziej widoczne kolory tarcz zegarka, i dodaliśmy do mechanizmu renderowania metody otwarte watchfaceColors i notifyWatchFaceColorsChanged, które umożliwiają systemowi uzyskiwanie kolorów tarczy zegarka za pomocą WallpaperManager.getWallpaperColors. (I3d611)
  • ShortTextComplicationData, RangedValueComplicationData, NoPermissionComplicationData (oraz eksperymentalne wersje DiscreteRangedValueComplicationData, GoalProgressComplicationData i WeightedElementsComplicationData) obsługują teraz SmallImages. Jeśli tarcza zegarka renderuje widżet w wielu kolorach, może teraz korzystać z wielokolorowego elementu SmallImage – wcześniej trzeba było używać obrazu monochromatycznego. (I257df)
  • Zrefaktoryzuj PreviewImageUpdateRequestedListener na Consumer<> (Ia875d)
  • Zastąp niestandardowy typ pojedynczej metody abstrakcyjnej (SAM) OnWatchfaceColorsListener ogólnym typem SAM Java (konsument) (I0c489)
  • Wycofaliśmy stare metody getOrCreateInteractiveWatchFaceClient i listenableGetOrCreateInteractiveWatchFaceClient, które nie określają właściwości PreviewImageUpdateRequestedListener. (Iec502)

Poprawki błędów

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

Wersja 1.2.0-alfa01

10 sierpnia 2022 r.

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

Nowe funkcje

  • Dodaliśmy eksperymentalną obsługę różnych nowych formatów widżetów. Jest to obszar, w którym pracujemy. Te nowe formaty mogą ulec zmianie bez powiadomienia. Obecnie CanvasComplicationDrawable nie obsługuje mechanizmu renderowania.
  • Dodaliśmy też opcjonalne marginesy do widżetów, dzięki czemu małe widżety są łatwiejsze do kliknięcia.

Zmiany w interfejsie API

  • Eksperymentalnej klasy BoundingArc nie można teraz zmienić. (If624a)
  • Małe widżety może być trudne do kliknięcia. Aby temu zaradzić, wprowadziliśmy obsługę marginesów, które zwiększają dostępny obszar bez wpływu na renderowanie. O ile nie określono inaczej (w kodzie lub w pliku XML), ComplciationSlots ma zerowy rozmiar marginesów. (I14089)
  • Zmieniono podpis getComplicationSlotInflationFactory(CurrentUserStyleRepository), aby zwrócić niepustą instancję fabryczną. Wcześniej zwracanie wartości null było wynikiem błędu, dlatego tym razem wyjaśniamy, na czym polega umowa dotycząca interfejsu API. (I0fcc0)
  • Dodaliśmy argument currentUserStyleRepository do metody WatchFaceService.getComplicationSlotInflationFactory, aby zapewnić spójność z createComplicationSlotsManager. (I2ddd2)
  • UserStyleFlavors nie jest już eksperymentem. (I69cdc)
  • Usunęliśmy eksperymentalną funkcję ValueType z funkcji RangedValueComplicationData, a zamiast tego wprowadziliśmy eksperymentalną funkcję DiscreteRangedValueComplicationData, która jest podobna do RangedValueComplicationData oprócz zakresu i wartości całkowitych. Oprócz tego wprowadziliśmy eksperymentalną funkcję GoalProgressComplicationData, która jest podobna do funkcji RangedValueComplicationData, ale wskazuje postęp w realizacji celu, w którym domyślnie wynosi 0, a wartość może być większa niż targetValue. Uwaga: w przypadku wszystkich wariantów RangedValue należy określić co najmniej 1 obraz monochromatyczny, tekst lub tytuł. (I9590c)
  • Usunęliśmy element boundsWithMargins z elementu ComplicationSlotState, ponieważ nie ma go dla oprogramowania systemowego. (I42e26)
  • Dodaliśmy eksperymentalną obsługę dla WeightedElementsComplicationData, która składa się z tablicy elementów (wagów wagi i koloru) oraz opcjonalnego tekstu, tytułu i obrazu. Te dane mogą być wyświetlane w formie wykresu kołowego, gdzie kolory muszą być istotne w danym kontekście, ponieważ zazwyczaj nie ma miejsca na widżety na renderowanie etykiet. (I87eea)
  • Eksperymentalny ColorRamps używany opcjonalnie przez RangedValueComplicationData i GoalProgressComplicationData pozwala teraz określić sekwencję maksymalnie 7 kolorów oraz flagę wskazującą, czy kolory powinny być płynnie przełączone między kolorami, czy też mają być renderowane ciągi jednolite w równych rozmiarach. (I9f5bf)
  • Parametr RangedValueComplicationData.drawSegmented został zmieniony na valueType. Jest to liczba całkowita z odpowiednim elementem ValueType IntDef, która nadaje znaczenie wartości z zakresu zakresu i może być używana przez mechanizm renderowania widżetu do wpływania na styl. (I0616b)
  • Do wersji RangedValueComplicationData dodaliśmy eksperymentalną obsługę opcjonalnych metod ColorRanges. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasami lepiej użyć parametru ComplicationDataSource, aby określić kolory, np. gdy mają one określone znaczenie semantyczne. np. kolor od czerwonego do niebieskiego oznaczający temperaturę. (I5153a)
  • Do interfejsu RangedValueComplicationData dodaliśmy eksperymentalną wskazówkę dotyczącą funkcji drawSegmented. Informuje to mechanizmu renderowania, że mają narysować wskaźnik wartości z zakresu zakresu z segmentami, gdzie 1 segment = 1 jednostka. (I7d7c1)

Poprawki błędów

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

Wersja 1.1

Wersja 1.1.1

10 sierpnia 2022 r.

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

  • Zawiera ona poprawki błędów. Zdecydowanie zalecamy użytkownikom wersji 1.1.0 jej uaktualnienie.

Poprawki błędów

  • Inicjowanie tarczy zegarka jest asynchroniczne. Jeśli widżet otrzyma widżet, zanim będzie gotowy, zostanie umieszczony na liście pendingInitialComplications i stosowany później. Niestety narzędzie pendingInitialComplications zostało zastosowane zbyt szybko, co oznacza, że podczas inicjowania tarczy zegarka występowało pewne opóźnienie, w którym widżety nadal były umieszczane na urządzeniu pendingInitialComplications i ignorowane. Problem został już rozwiązany. Ta poprawka zawiera też poprawkę błędu polegającego na tym, że interfejs ComplicationRenderer nieprawidłowo próbował asynchronicznie wczytywać obiekty zastępcze, co powodowało brak aktualizacji grafiki kompilacji. Ta poprawka zawiera również teoretyczny błąd polegający na scalaniu większej liczby pendingInitialComplications. (0d03ba3)

  • Napraw potencjalne zakleszczenie w miejscu InteractiveInstanceManager, w którym urządzenie getExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance trzymało blokadę dłużej niż było to konieczne. Zazwyczaj przyjmujemy, że engine.setUserStyle będzie działać szybko, ale jeśli z jakiegoś powodu nie jest to możliwe, kończy się zakleszczeniem lub błędem ANR. Ta poprawka pozwala wyeliminować niepotrzebne prace, eliminując ryzyko zakleszczenia.(5a2adca)

  • Rozwiąż kilka problemów, które nie zakłócały działania aplikacji WatchFaceService. WakeLock może czasami zachowywać WatchFaceService. Dodanie wywołania release() rozwiązuje ten problem. StateFlows może też zachować WatchFaceService, anulując wcześniejsze poprawki CoroutineScopes.(fd48138)

  • Dodaj czasy oczekiwania do awaitDeferredWatchFace* i napraw watchfaceOverlayStyle (NullPointerException). W normalnych okolicznościach ten czas nie powinien przekraczać czasu oczekiwania, także po nowej instalacji i w przypadkach DirectBoot, gdy obciążenie procesora jest duże. Naprawiliśmy też NPE, jeśli funkcja getWatchfaceOverlayStyle jest wywoływana po close().(a4c3a5a)

Wersja 1.1.0

15 czerwca 2022 r.

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

Ważne zmiany od wersji 1.0.0

Ulepszone edytowanie:

  • Dodaliśmy obsługę schematów hierarchicznych, które pozwalają na tworzenie hierarchii stylów przez interfejsy edytora. Możesz teraz określić osobne ikony do używania na tarczy zegarka i w edytorach towarzyszących.
  • Istnieje możliwość akceptowania wielu wystąpień tarczy zegarka, a każde z nich ma unikalny identyfikator dostępny na wszystkich platformach API.
  • Teraz możesz określić w edytorze zrozumiałe dla człowieka nazwy elementu ComplicationSlots.
  • Eksperymentalna obsługa „smaków” – wyselekcjonowanych stylów, które będą widoczne w edytorze towarzyszącym.
  • Podczas edycji dwóch wystąpień tarczy zegarka możliwe jest współużytkowanie zasobów, oszczędzając pamięć
  • Gdy wybierzesz widżet w edytorze tarcz zegarka, obecny dostawca będzie teraz wstępnie wybrany.

Ulepszone widżety:

  • Możesz teraz określić ComplicationType dla podstawowych i dodatkowych źródeł danych, co zapewnia deweloperom większą elastyczność działania, które będzie gotowe do użytku.
  • Dodaliśmy funkcję ComplicationDataTimeline, która zawiera sekwencję danych ograniczonych czasowo, które są przesyłane na tarczę zegarka, a następnie zapisywane w pamięci podręcznej i automatyczne aktualizowane. Może to być na przykład prognoza pogody na dziś o różnych porach lub wiele nadchodzących wydarzeń w kalendarzu.
  • ComponentName dostawcy widżetu jest częścią ComplicationData.
  • Widżety są teraz zapisywane w pamięci podręcznej, co ułatwia przełączanie się między tarczami zegarka.

Inne zmiany:

  • Elementy UserStyleSchema i ComplicationSlots można teraz definiować w formacie XML. Upraszcza to konstrukcję tarczy zegarka i pozwala na szybsze zapytania 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.

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

Nowe funkcje

  • Wprowadziliśmy kilka poprawek w obsłudze kodu XML tarczy zegarka, aby ułatwić określanie ComplicationSlotBounds i odwołań. Trwają eksperymenty z komplikacją na krawędziach: BoundingArc, przenoszę ją do drawHighlight, ale obecnie nie zalecamy korzystania z niej.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalne przeciążenie wynoszące drawHighlight, które akceptuje parametr BoundingArc. (I705f8)
  • Kod XML tarczy zegarka obsługuje odwołania do zasobów. Pozwala używać tych samych stałych w kodzie XML i w kodzie. (I3ef61)
  • Dodaliśmy możliwość definiowania ciągu ComplicationSlotBounds w formularzach center_x, center_y, size_x i size_y. Obecnie można też używać różnych jednostek (np. dp) za pomocą odwołań do zasobów. (Iace98)

Poprawki błędów

  • Napraw plik runBlockingWithTracing, który uruchamiał zadania w niewłaściwym kontekście.(4f595fe)
  • Włącz synchronizację pliku BaseEditorSession.close. Problem z asynchronizacją funkcji BaseEditorSession.close polega na tym, że interfejs ComplicationDataSourceInfoRetriever jest udostępniany zbyt późno, co powoduje ostrzeżenie o spamie w logcat. Prawdopodobnie nie było to nic groźnego, ale spam logcat jest rozpraszający, dlatego należy go unikać.(35a5308)

Wersja 1.1.0-beta02

11 maja 2022 roku

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

Nowe funkcje

  • Dodaliśmy eksperymentalną obsługę nowych typów ComplicationData. Nie są one jeszcze gotowe do użycia, ale zachęcamy do obejrzenia tego pokoju.

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalną klasę BoundingArc opisującą geometrię przedziału komplikacji brzegowej. Ten dźwięk został dodany do ComplicationSlot i podłączony do ComplicationSlotState i WatchFaceMetadataClient. (I61a40)
  • Dodaliśmy możliwość dziedziczenia ustawień w pliku XML UserStyleSetting. Pozwala zmniejszyć szczegółowość i udostępniać ustawienia dla różnych tarcz zegarka. (Ief841)
  • Dodaliśmy 2 nowe eksperymentalne typy funkcji ComplicationData: ListComplicationData i ProtoLayoutComplicationData. Obecnie nie ma obsługi renderowania w przypadku żadnego z tych typów, a Wear OS nie rozpoznaje obecnie tych typów po dodaniu do pliku manifestu ComplicationDataSource's. (I1811c)

Poprawki błędów

  • Napraw serializację typu TimeLineEntry. Nie zserializowaliśmy typu TimeLineEntry, co oznacza, że zapisane w pamięci podręcznej TimeLineEntries typu NoData zostało błędnie zinterpretowane jako typ komplikacji nadrzędnej prowadzącej do NPE w przypadku uzyskania dostępu do nieistniejących pól wymaganych. (55ffdf5)
  • Naprawiono błąd, przez który usługa setComplicationData pomijała pola osi czasu(fb392f5)
  • Poprawki błędu, który sporadycznie runBlockingWithTracing prowadzi do NPE(12ca62e)
  • Poprawiono błąd, który powodował, że podczas wyświetlania widżetu czasami wyświetlał się komunikat ClassNotFoundException: android.support.wearable.complications.ComplicationText.(217942d9)
  • Naprawiono błąd w funkcji GlesRenderer.backgroundThreadInitInternal, który powodował wywoływanie funkcji onBackgroundThreadGlContextCreated tylko wtedy, gdy wywoływano funkcję EGL14.eglCreateContext. Usunięto inny błąd, w którym na zrzucie ekranu widoczna była widoczna usterka wywołana przez parametr verticalFlip.(c674ad2)
  • Poprawiono sprawdzanie wersji XML (WatchFaceService) – ładowanie odbywało się z niewłaściwego pakietu. (dfa06f3).
  • Zastępczy format przewodu korzysta teraz z pakietu wewnętrznego. Nie chcemy, by symbole zastępcze zakłócały działanie istniejących tarcz zegarka, które mogą korzystać z ukrytych wewnętrznych elementów a.s.w.c.ComplicationData. Wcześniej format przewodów danych NoDataComplication zawierał obiekt zastępczy w zwykłych polach (problematyczne było to, że stare tarcze zegarka renderowały niezamierzony ciąg zastępczy). Teraz w pełni wyizolujemy to pole, używając wewnętrznego pakietu (d5e7bd2).

Wersja 1.1.0-beta01

20 kwietnia 2022 r.

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

Zmiany w interfejsie API

  • Teraz metody WatchFaceMetadataClient (getUserStyleSchema, getComplicationSlotMetadataMap, getUserStyleFlavors) i HeadlessWatchFaceClient.getUserStyleFlavors zgłaszają odznaczone zdarzenie wykonawcze klasy wykonawczej zamiast WatchFaceException. (I0718a)
  • Szkolenie WatchFaceMetadataClient.WatchFaceException zostało przeniesione z zajęć, aby można było go użyć ponownie. (I4e869)

Poprawki błędów

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

Wersja 1.1.0-alfa05

6 kwietnia 2022 roku

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

Nowe funkcje

  • Możesz teraz określić, z którego źródła danych pochodzi ComplicationData, sprawdzając wskaźnik ComplicationData.dataSource. Niektóre tarcze zegarka mogą wykorzystać tę informację do dostosowania wyświetlania widżetu. (I44a73)

Zmiany w interfejsie API

  • Metody Renderer.CanvasRenderer i Renderer.GlesRenderer zostały wycofane i zastąpione elementami Renderer.CanvasRenderer2 i Renderer.GlesRenderer2, które obsługują SharedAssets, które są przekazywane do metod renderowania. Do interoperacyjności z Javą wprowadziliśmy ListenableCanvasRenderer2 i ListenableGlesRenderer2. (I31ffa)
  • Dodano możliwość definiowania smaków w usłudze @WatchFaceFlavorsExperimental – wstępnie skonfigurowana lista tarcz o stylu zegarka (I04dd0)
  • Renderer.sharedAssets to teraz StateFlow i usunęliśmy nieużywane Renderer.SharedAssetsFactory (I12ac5)
  • Usługa UserStyleSchema.userStyleSettings nie jest już wycofana (Iba7e3)
  • Dodaliśmy funkcję HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, która pozwala HeadlessWatchFaceClient uniknąć stosunkowo niskiego nakładu pracy związanego z przekazywaniem schematu przez AIDL przed obliczeniem skrótu skrótu. (I33597)
  • Do zasady WatchFaceMetadataClient dodaliśmy ustawienie isUserStyleSchemaStatic. Dzieje się tak tylko wtedy, gdy UserStyleSchema można polegać, aby nie wprowadzać zmian, dopóki plik APK z tarczem zegarka nie zostanie zaktualizowany. (I45a3f)
  • Do interfejsu UserStyleSchema dodaliśmy polecenie getDigestHash, które oblicza hasz skrótu schematu. Dzięki temu można skutecznie określić, czy UserStyleSchema uległ zmianie. (I2063d)
  • Nazwa konta METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED została zmieniona na METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED (I9ba5d)
  • Nazwa aplikacji UserStyleSetting.OnWatchEditorData została zmieniona na UserStyleSetting.WatchFaceEditorData. Zawiera ona dane używane wyłącznie przez edytor tarcz zegarka. (If3afb)

Wersja 1.1.0-alfa04

9 marca 2022 r.

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

Zmiany w interfejsie API

  • Aktualne ustawienie ComplicationData może nie zawsze być dostępne (np. dane ComplicationData, które utraciły ważność w pamięci podręcznej), dlatego dodaliśmy w polu NoDataComplication opcjonalne zastępcze dane ComplicationData i dodaliśmy te uprawnienia: ComplicationText.PLACEHOLDER, MonochromaticImage.PLACEHOLDER, SmallImage.PLACEHOLDER, PhotoImage.PLACEHOLDER, których można używać tylko w kontekście obiektu zastępczego NoDataComplicationData. Jeśli wybierzesz te symbole zastępcze, będą one wyświetlane z szarymi polami lub łukami. (I6285d)
  • Dodaliśmy ComplicationData.getNextChangeInstant, który informuje o następnym wyszukiwaniu dynamicznym po referencyjnym wyszukiwaniu dynamicznym, w którym dowolne pole widżetu może ulec zmianie. Jest ona używana wewnętrznie do planowania ramek do aktualizacji widżetów. Na przykład jeśli tarcza zegarka zwykle aktualizuje się raz na minutę, widżet zatrzymuje aktualizację tylko raz na sekundę. (I7ceb2)
  • EditorSession.watchFaceId można teraz używać na wszystkich poziomach interfejsu API. Dodatkowo jego wartość będzie teraz zawsze zgodna z wartością WatchState.watchFaceInstanceId. (I323b9)
  • Interfejs getPendingIntentForTouchEvent API nie jest już potrzebny, ponieważ problem został rozwiązany w ramach platformy, więc wszystkie powiązane z nim interfejsy API zostały usunięte. Tarcze zegarka nie muszą wykonywać żadnych specjalnych czynności, aby urządzenie PendingIntents się uruchamiało, nawet jeśli niedawno został naciśnięty przycisk ekranu głównego. (I1f2e8)
  • Dodaliśmy parametr RendererParameters.isForScreenShot, który będzie się wyświetlać, jeśli renderowanie będzie dotyczyć zrzutu ekranu. Niektóre tarcze zegarka z animacjami muszą o tym wiedzieć, by wprowadzić poprawki i uzyskać jak najlepsze wyniki. (I96d99)
  • Dodaliśmy WatchFaceExceptionReason do aplikacji WatchFaceException, aby przybliżyć nieco kontekstu tego, co poszło nie tak. (I01d15)
  • Aplikacja ComplicationDataSourceService.onImmediateComplicationRequest została usunięta, a zamiast niej dodano ComplicationRequest.immediateResponseRequired, aby zasygnalizować, że dostawca musi szybko odpowiedzieć (najlepiej, aby odpowiadał w czasie krótszym niż 100 ms). Pamiętaj, że ta funkcja jest chroniona za uprawnieniem com.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE. (Ie6b23)
  • Zaktualizowana wartość null w Core i appcompat, aby dopasować ją do Tiramisu DP2 (I0cbb7).

Poprawki błędów

  • Teraz aplikacja tarczy zegarka ulega awarii, jeśli weryfikacja schematu nie powiedzie się (Ia400f)

Wersja 1.1.0-alfa03

9 lutego 2022 r.

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

Zmiany w interfejsie API

  • Dodaliśmy eksperymentalną obsługę schematów stylów hierarchicznych. Do aplikacji androidx.wear.watchface.style.UserStyleSetting.Option dodaliśmy nową usługę:childSettings, z której początkowo korzysta tylko ListOption. Dzięki temu można opisywać hierarchię stylów do użycia w interfejsach Edytora. Podstawowy element UserStyle pozostaje bez zmian i nadal ma wartość Map<String, ByteArray>. (Iaf6f4)
  • Dodaliśmy WatchFace.OverlayStyle, który umożliwia skonfigurowanie renderowania systemowej nakładki stanu na tarczy zegarka. (I8520d)
  • Wprowadziliśmy clearWithBackgroundTintBeforeRenderingHighlightLayer nowy opcjonalny parametr konstruktora dla elementu CanvasRenderer (domyślnie jest to false). Ustawienie wartości „true” (prawda) powoduje usunięcie obszaru roboczego z odcieniem tła. (Ie01e5)
  • Dodano klucz metadanych androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED, który umożliwia źródłom komplikacji wskazywanie, że mogą podawać wartość domyślną bez żadnej konfiguracji (Icc0d4).
  • Podczas edytowania tarczy zegarka często pojawia się zarówno instancja interaktywna, jak i bez interfejsu graficznego. Aby oszczędzać pamięć, wprowadziliśmy Renderer.SharedAssets, który umożliwia mechanizmowi renderowania tarcz zegarka udostępnianie stałych danych (np. tekstur i cieniowania) między instancjami. Reguły GlesRenderer.setEglConfig i GlesRenderer.setEglDisplay zostały wycofane. Nigdy nie było to przeznaczone do skonfigurowania, co doprowadziłoby do niezdefiniowanego zachowania. (I0d9e7)
  • Do obiektu ComplicationSlot.Builder dodaliśmy metody setNameResourceId i setScreenReaderNameResourceId (które odwołują się do zasobów w postaci ciągu znaków) oraz odpowiednie metody pobierania w androidx.wear.watchface.client.ComplicationSlotState. Dzięki temu system będzie mógł pobierać nazwy ComplicationSlots do wykorzystania w edytorach i czytnikach ekranu. (If6c6a)
  • WatchfaceMetadataClient.getUserStyleSchema i getComplicationSlotMetadataMap zgłaszają teraz WatchFaceException zamiast RemoteException. (I86f11)
  • Nazwa usługi onSynchronousComplicationRequest i powiązanych funkcji w aplikacji ComplicationDataSourceService została zmieniona na onImmediateComplicationRequest itp. (I87ba0)
  • Edytory tarcz zegarka mają znacznie mniej miejsca na ekranie niż edytory towarzyszące, dlatego warto obsługiwać w tych edytorach różne ikony. Ta poprawka dodaje klasy OnWatchEditorData (zawierające obecnie tylko ikonę) do wszystkich UserStyleSettings oraz tam, gdzie to konieczne, do ich klas opcji. (If1886)
  • Dodaliśmy @JvmOverloads do konstruktora ListenableGlesRenderer, aby zapewnić lepsze współdziałanie z Javą. (I2974a)

Poprawki błędów

  • Konstruktor ListenableGlesRenderer jest teraz poprawnie oznaczony jako @Throws(GlesException::class) i można rozszerzać tę klasę w języku Java. (Iac6d0)
  • Poprawiono błąd związany z nieprawidłowym obsługą funkcji PhotoImageComplicationData tapAction (I1cc30)

Wersja 1.1.0-alfa02

12 stycznia 2022 r.

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

Nowe funkcje

  • Aby ułatwić debugowanie i testowanie, w klasach ComplicationData i powiązanych z nimi zostały zastąpione metody „równa się”, „równa się” i „toString”, co ułatwia korzystanie z nich.

Zmiany w interfejsie API

  • Metody WatchfaceMetadataClient ponownie zwracają parametr RemoteExceptions w odpowiednich miejscach, co ułatwia kod klienta wychwytywanie błędów z tarczy zegarka. (I78785)
  • Klasy ComplicationData i podrzędne mają teraz kod skrótu, równa się i toString. (I24bc6)

Wersja 1.1.0-alfa01

15 grudnia 2021 roku

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

Nowe funkcje

  • Elementy UserStyleSchema i ComplicationSlots można teraz definiować w formacie XML. Upraszcza to konstrukcję tarczy zegarka. Zapytania WatchFaceMetadataClient są też szybsze, ponieważ nie wymagają powiązania z usługą w celu pobrania metadanych. WatchFaceMetadataClient i ListenableWatchFaceMetadataClient nie są już eksperymentalne i staną się częścią stabilnego interfejsu API. System będzie opcjonalnie obsługiwać wiele wystąpień tarczy zegarka, z których każda będzie mieć własne opcje stylu zdefiniowane przez użytkownika. Będą one widoczne w selektorze tarczy zegarka. Aby można było włączyć tę tarczę, w pliku manifestu musi znaleźć się ten metatag danych.

        <meta-data
            android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED"
            android:value="true" />
    
  • Niektóre tarcze zegarka mają stan, który nie jest zarejestrowany w usłudze UserStyle. Aby umożliwić obsługę tego i wielu wystąpień, identyfikator instancji tarczy zegarka jest teraz dostępny w usłudze WatchState.watchFaceInstanceId.

  • Aplikacja ComplicationData jest teraz przechowywana w pamięci podręcznej, aby widżety mogły wyświetlać się od razu po wczytaniu. Czasami ComplicationData jest zapisywany w pamięci podręcznej przez system, a czasem jest zserializowany przez biblioteki tarcz zegarka. Po zserializowaniu wszelkie powiązane funkcje TapAction zostaną utracone, a ComplicationData.tapActionLostDueToSerialization zwróci wartość true, a tarcza zegarka powinna renderować widżet inaczej (np. wyszarzony lub półprzezroczysty), aby zasygnalizować, że nie można go kliknąć. System jak najszybciej wyśle zaktualizowane dane ComplicationData z atrybutem tapAction.

  • Niektóre pliki ComplicationData nie powinny być przechowywane w pamięci podręcznej przez długi czas. W związku z tym dodaliśmy bardziej ogólną funkcję ComplicationDataTimeline. Pozwala to zapewnić wyświetlanie na tarczy zegarka sekwencji ComplicationData ograniczonej czasowo, która może być przechowywana w pamięci podręcznej i aktualizowana automatycznie. Może to być na przykład prognoza pogody na dziś o różnych porach lub wiele nadchodzących wydarzeń w kalendarzu. Rozszerzenie ComplicationRequestListener zostało rozszerzone o nową metodę onComplicationDataTimeline, której możesz użyć do zwrócenia tych danych.

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

  • Dodaliśmy obsługę widżetów synchronicznych w przypadku dostawców, w przypadku których widżet jest aktualizowany z większą częstotliwością niż zwykle – maksymalnie raz na sekundę, gdy tarcza zegarka jest widoczna, ale nie jest w tle. Uwaga: dostawcy widżetów synchronicznych mogą być używane w ograniczonym zakresie z powodu problemów z obciążeniem pamięci.

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

Zmiany w interfejsie API

  • Funkcja ComplicationData.isCached została zmieniona na tapActionLostDueToSerialization, co jest bardziej przydatne przy określaniu, czy przedział widżetu powinien być renderowany inaczej, aby zasygnalizować, że nie można go kliknąć. (I6de2f)
  • Element ComplicationDataTimeline został dodany do listy wear-complication-data-source. Pozwala to zapewnić wyświetlanie na tarczy zegarka sekwencji ComplicationData ograniczonej czasowo, która może być przechowywana w pamięci podręcznej i aktualizowana automatycznie. Może to być na przykład prognoza pogody na dziś o różnych porach lub wiele nadchodzących wydarzeń w kalendarzu. Rozszerzenie ComplicationRequestListener zostało rozszerzone o nową metodę onComplicationDataTimeline, której możesz użyć do zwrócenia tych danych. Zastosowano nową otokę kotlin SuspendingTimelineComplicationDataSourceService do zawieszania usług źródeł danych. (Idecdc)
  • Dodano PendingIntentTapListener i WatchFaceControlClient.getPendingIntentForTouchEvent. Może to pomóc w rozwiązaniu problemu polegającego na tym, że platforma blokuje uruchamianie nowych aktywności przez 5 sekund po naciśnięciu przycisku ekranu głównego. (I98074)
  • Wprowadzono pamięć podręczną ComplicationData dla poszczególnych tarcz zegarka. Dzięki temu po wczytaniu tarczy zegarka będą mogły wyświetlać ostatnie znane wartości danych widżetu, dopóki system ich nie zaktualizuje. Istnieje nowa metoda interfejsu API WatchFaceControlClient.hasComplicationCache dla producentów OEM. Może to wpłynąć na strategię systemu dotyczącą wysyłania widżetów na tarczę zegarka. Dodatkowo ComplicationData ma właściwość isCached i zalecamy, aby widżety z pamięci podręcznej były renderowane w inny sposób, ponieważ tapAction nie może być przechowywana w pamięci podręcznej i będzie miała wartość null w pamięci podręcznej. (I404b0)
  • Identyfikator instancji tarczy zegarka jest teraz dostępny w WatchState.watchFaceInstanceId. Większość tarcz zegarka nie musi z niej korzystać, ale jeśli istnieje stan tarczy, który nie jest zapisany w schemacie, jest to klucz do identyfikacji wystąpienia tarczy. W tym celu możesz teraz podać identyfikator podczas nawiązywania połączenia z numerem WatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98)
  • Rozszerzona funkcja DefaultComplicationDataSourcePolicy z możliwością ustawienia domyślnej wartości ComplicationTypes dla głównego, dodatkowego dostawcy oraz zastępczego dostawcy systemu. Interfejs ComplicationSlot.defaultDataSourceType został wycofany. (If0ce3)
  • Działanie ComplicationSlot.configExtras jest teraz zmienne i można je zaktualizować, zanim wywołasz funkcję EditorSession.openComplicationDataSourceChooser(). (I6f852)
  • Dodano WatchFace.setComplicationDeniedDialogIntent i setComplicationRationaleDialogIntent. Te intencje są uruchamiane, aby wyświetlić okno z uzasadnieniem przed zażądaniem uprawnień do widżetu, a drugie okno wyjaśniające, że podczas próby edytowania widżetu po odmowie uprawnień potrzebne są uprawnienia do widżetu (lista wyboru dostawcy się nie otworzy, więc potrzebne jest okno). (I3a29c)
  • Elementy UserStyleSchema i ComplicationSlots można teraz definiować w formacie XML. Upraszcza to konstrukcję tarczy zegarka i przyspiesza zapytania WatchFaceMetadataClient, ponieważ nie musi łączyć się z usługą w celu pobrania metadanych. (I85bfa)
  • Dodano element InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent, aby klient mógł określić, czy tarcza zegarka obsługuje getPendingIntentForTouchEvent. (I0b917)
  • Wersje WatchFaceMetadataClient i ListenableWatchFaceMetadataClient nie są już eksperymentalne. Można ich używać do wydajnego uzyskiwania metadanych tarczy zegarka tam, gdzie jest to możliwe, bez otwierania segregatora z tarczą zegarka. (Ibb827)
  • Dodaliśmy obsługę widżetów synchronicznych, w przypadku których widżet jest aktualizowany z większą częstotliwością niż zwykle – maksymalnie raz na sekundę, gdy tarcza zegarka jest widoczna i nie wykonuje ją w tle. Aby można było korzystać z tego pliku, dostawca musi umieścić w swoim pliku manifestu nowy tag metadanych androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS i zastąpić parametr onSynchronousComplicationRequest. W zależności od charakteru źródła danych może być również konieczne zastąpienie onStartSynchronousComplicationRequests i onStopInteractiveComplicationRequests, aby otrzymywać powiadomienia o tym, że widżet przechodzi do trybu interaktywnego, a kiedy z niego wychodzi. (I8fe9d)

Wersja 1.0

Wersja 1.0.1

9 lutego 2022 r.

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

Poprawki błędów

  • Poprawiono błąd związany z nieprawidłowym obsługą funkcji PhotoImageComplicationData tapAction (I1cc30)

Wersja 1.0.0

Grudzień 1, 2021

Aplikacja androidx.wear.watchface:watchface-*:1.0.0 została zwolniona. 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 z Wear OS. Udostępnia wiele nowych funkcji zamiast starej biblioteki pomocy dotyczącej urządzeń do noszenia.

  • Styl użytkownika (np.zmiana palety kolorów, stylu wskazówek zegarka, wyglądu wskazówek godzin itp.) jest bezpośrednio obsługiwana przez bibliotekę (patrz androidx.wear.watchface.style). Teraz znacznie łatwiej można opracować edytor tarcz zegarka za pomocą aplikacji androidx.wear.watchface.editor, a tarczę zegarka można edytować w systemowej aplikacji towarzyszącej bez konieczności pisania dodatkowego kodu.
  • Sprawdzone metody Biblioteka automatycznie generuje etykiety treści czytnika ekranu na widżety (możesz też dodać własne), a liczba klatek na sekundę automatycznie spada, gdy bateria jest bliska rozładowania, i nie się ładuje, aby wydłużyć czas pracy na baterii.
  • Do opracowania tarczy zegarka potrzeba mniej kodu, szczególnie w przypadku widżetów, które zawierają dużo treści przeniesionej do biblioteki.

Poprawki błędów

  • Napraw EditorSession.userStyle.compareAndSet (I6f676)
  • Naprawianie bardzo krótkich opóźnień tarczy zegarka (Iffb97)
  • Wyślij InteractiveWatchFaceImpl.onDestroy w wątku UI (I83340)
  • Naprawianie kilku problemów z odbiornikami (I7d25f)

Wersja 1.0.0-rc01

3 listopada 2021 r.

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

Poprawki błędów

  • Napraw parametr dump() (wywoływany przez adb shell dumpsys), który nie działa w wyniku migracji przepływu. (087cf9e)

  • Zadbaj o prawidłową kolejność operacji writeDirectBootPrefs. Chcemy, aby parametr writeDirectBootPrefs był zawsze uruchamiany po initStyleAndComplications. W przeciwnym razie istnieje ryzyko opóźnienia w inicjowaniu wątku UI.(37650ac)

  • Sprawdź, czy wywoływana jest metoda Renderer.onDestroy. Jeśli mechanizm renderowania został utworzony, ale inicjowanie WF nie zostało ukończone i wywołuje mechanizm Engine.onDestroy, musimy wywołać metodę Renderer.onDestroy. (F9952dc)

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

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

Wersja 1.0.0-beta01

27 października 2021 roku

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

Wersja 1.0.0-alfa24

13 października 2021 r.

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

Zmiany w interfejsie API

  • Zajęcia z pakietu androidx.wear.watchface.complications zostały przeniesione do nowego projektu wear:watchface:watchface-complications. Oznacza to, że nie możesz dołączyć tej biblioteki oraz wszystkich poprzednich wersji alfa usługi wear:watchface:watchface-complications-data, ponieważ pojawią się błędy dotyczące zduplikowanych zajęć. (I97195)
  • Nazwa pliku Renderer.dump została zmieniona na Renderer.onDump, a do niej dodano adnotację @UiThread. (I44845)
  • Nazwa konta InteractiveWatchFaceClient.addWatchFaceReadyListener została zmieniona na addOnWatchFaceReadyListener, a nazwa removeWatchFaceReadyListener została zmieniona na removeOnWatchFaceReadyListener. (I48fea)
  • EdytorSesja getComplicationsPreviewData i getComplicationsDataSourceInfo nie zawieszają już funkcji. Zamiast tego są właściwościami StateFlow<>, których wartość jest początkowo równa zero. W sekcji ListenableEditorSession usunięto elementy getListenableComplicationPreviewData i getListenableComplicationsProviderInfo, które zostały zastąpione nowymi obiektami StateFlow<> z klasy podstawowej. Jeśli chcesz wychwytywać zmiany w kodzie Java, rozważ przekonwertowanie kodu na LiveData<> przy użyciu androidx.lifecycle.FlowLiveDataConversions.asLiveData. (Ic5483)

Wersja 1.0.0-alfa23

29 września 2021 r.

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

Nowe funkcje

Biblioteka tarcz zegarka to teraz jedna grupa 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ś oddzielną bibliotekę tarczy zegarka i widżet androidx.wear do grupy bibliotek androidx.wear.watchface. (b25f3c0)
  • Dodano element EditorRequest.canWatchFaceSupportHeadlessEditing, aby poinformować klienta, czy edytor tarczy zegarka obsługuje edytowanie bez interfejsu graficznego. Może to spowodować występowanie pewnych wyników fałszywie negatywnych, ponieważ obsługa rozszerzenia asop/1756809 będzie zwracać prawidłową wartość dla wszystkich przyszłych tarcz zegarka. (CA55590)
  • Mechanizm renderowania udostępnia teraz metodę dump(), którą można zastąpić, by dodać dane niestandardowe do informacji generowanych przez WatchFaceService w usłudze aktywności ABD shell dumpsys. (95235f9)
  • InteractiveWatchFaceClient.addWatchFaceReadyListener teraz określa wykonawcę jako pierwszy. (563ac2f)
  • Usunięto parametr StateFlowCompatHelper. Zamiast niego należy użyć asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
  • Nie można już zmienić elementu CurrentUserStyleRepository.userStyle. (I44889)
  • Nazwa zegarka WatchFaceReadyListener została zmieniona na OnWatchFaceReadyListener. (Ic12a9).

Poprawki błędów

  • InteractiveInstanceManager.deleteInstance to call onDestroy Jest to wymagane, aby InteractiveWatchFaceImpl mógł zbierać śmieci.(fce4af8, b/199485839)