Tarcza zegarka Wear
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.
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.watchfaceColorsjest 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ć
ColorUserStyleSettingw 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
UserStyleSettingiUserStyleOptionmają 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 uprawnieniacom.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żdegoListOption.UserStyleschematy 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 symbolColorUserStyleSettingw miejscach, w których opcja zawiera listę kolorów zamiast ikony, co jest znacznie bardziej kompaktowe. (Ib542e) ColorUserStyleSettingiColorOptionwymagają 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
UserStyleSettingsiUserStyleOptions, 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 ustawiaComplicationDatabazowej 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
selectComplicationDataForInstantwywoływała funkcjętoApiComplicationDataw 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
selectedDatauż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
WatchFaceServicesmożna inicjować równocześnie, dlatego powinny być bezstanowe. Aby to umożliwić, dodaliśmyStatefulWatchFaceService, w którym zdefiniowany przez użytkownika dodatkowy element utworzony przezcreateExtra()jest przekazywany do wszystkich zastąpień wywoływanych podczas inicjowania.GlesRenderer2ma 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
StatefulWatchFaceServiceobsługuje teraz zastępowanie parametrugetComplicationSlotInflationFactory, do którego przekazywana jest zdefiniowana przez użytkownika dodatkowa kreacja utworzona przezcreateExtra(). (I82d9f)- Niektóre tarcze zegarka muszą udostępniać dane pomocnicze utworzone podczas
createUserStyleSchemainnym metodom inicjowania. Ponieważ nie było lepszej alternatywy, programiści zwykle tworzyli komponentyWatchFaceServicesz 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śmyStatefulWatchFaceServiceiStatefulWatchFaceRuntimeService, gdzie typ zdefiniowany przez użytkownika jest tworzony przezcreateExtra()i przekazywany do różnych metod tworzenia jako parametr. (If8a99) - Dodaliśmy
getUserStyleFlavorsdoInteractiveWatchFaceClient, co jest interesujące przede wszystkim dla producentów OEM. (I0f5d8) GlesRenderer2ma 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_RATEbędzie dostępna na urządzeniach WearOS. Ten element interfejsu obsługuje tylko elementy interfejsuSHORT_TEXT, ale zalecamy, abyComplicationSlotakceptował też elementySMALL_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 zMETADATA_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 metadanychMETADATA_KEY_DATA_SOURCE_CONFIG_ACTIONo 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 funkcjiRangedValueComplicationData, 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
ColorRangesdo znacznikaRangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasamiComplicationDataSourcemoże najlepiej ustawić kolory, np. gdy mają one szczególne znaczenie semantyczne. np. od czerwonego do niebieskiego w przypadku temperatury. - Prawie każdy typ
ComplicationDataobsługuje terazSmallImages. - Dodaliśmy
ComplicationDisplayPolicy, gdzieDO_NOT_SHOW_WHEN_DEVICE_LOCKEDinformuje 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_FACESw manifeście dostawcy, za pomocąComplicationRequest#isForSafeWatchFace. Aby otrzymywać inne wartości niż TargetWatchFaceSafety.UNKNOWN, dostawca musi mieć uprawnieniecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE. UserStyleFlavorsstał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#onDestroyjest 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
WatchFaceRuntimeServiceiWatchFaceControlClient.createWatchFaceRuntimeControlClientwraz 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,TapTypelubComplicationsSlotBoundsType. (I4098b) - Zaktualizowano pliki interfejsu API, aby dodać adnotacje dotyczące wyłączenia zgodności. (I8e87a, b/287516207)
- Ta poprawka udostępnia stałe
WatchFaceTypewWatchFaceTypes, stałeCanvasTypewCanvasTypes, stałeTapTypewTapTypesi stałeComplicationsSlotBoundsTypewComplicationsSlotBoundsType. (I3b85a, b/288750666) WatchFace.OverlayStylejest 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.Builderobsługuje terazDynamicFloat, a nowyDynamicComplicationTextjest dostępny jako podklasaComplicationText. 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. InterfejsSensorGatewayzostał usunięty z publicznego interfejsu API. (I55b84) - Zmieniliśmy nazwę interfejsu
StateEntryValuenaDynamicDataValuei zaktualizowaliśmy interfejsy API stanu, aby korzystały z interfejsuDynamicDataKey. (If1c01) - Dodaj
AppDataKey, aby uzyskać dostęp do stanu wypychanego aplikacji; dodajPlatformDataKey, aby uzyskać dostęp do danych platformy; dodaj obsługę przestrzeni nazw wStateStore. (I7985e) - Metody
enable/disablePlatformSourcezostały usunięte z usługiDynamicTypeEvaluator. 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_FACEmogą rejestrować metadaneandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, które zastępująandroid.support.wearable.complications.SUPPORTED_TYPESw 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
@Deprecateddo usługi (I882d1, b/271441831) - Nazwa parametru wartości dla
Enum.valueOfzostała zmieniona (Ia9b89) - Więcej wyjątków zgłaszanych przez enum valueOf (I818fe)
- Usunęliśmy
renderWatchFaceToSurfacena rzeczcreateRemoteWatchFaceView, która jest oparta na SurfaceControlViewHost i umożliwia wywołującemu osadzenie widoku z tarczy zegarka, który jest renderowany, gdy klient wywołujeRemoteWatchFaceViewHost#renderWatchFace. (Ib311d) - Dodaliśmy użytkownika
renderWatchFaceToSurfacedoInteractiveWatchFaceClient,HeadlessWatchFaceClientiEditorSession. Zwykle jest to bardziej wydajne niż renderowanie do mapy bitowej. (Ieacad) - Nazwa
ObservableStateStorezostała zmieniona naStateStore. (Ieb0e2) - Zamiast argumentów konstruktora dodano
DynamicTypeEvaluator.Builder, aby umożliwić używanie większej liczby argumentów opcjonalnych, w tymObservableStateStore, który domyślnie jest teraz pustym sklepem. (I6f832) - Zmieniono kolejność parametrów w funkcji
DynamicTypeEvaluator. (Ic1ba4) - Do metod
DynamicTypeEvaluator.binddodano wykonawcę. (I346ab) - Dodaliśmy metodę
startEvaluationdoBoundDynamicType, 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_FACEmogą rejestrować metadaneandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES, które zastępująandroid.support.wearable.complications.SUPPORTED_TYPESw przypadku bezpiecznych tarcz zegarka. (Id1c73) - Zmieniliśmy nazwę
CustomValueUserStyleSettings2naLargeCustomValueUserStyleSettings. (Ic17ac)
Poprawki błędów
DynamicTypeValueReceiver#onPreUpdatezostał(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_FACESw manifeście dostawcy, za pomocąComplicationRequest#isForSafeWatchFace. Aby otrzymywać inne dane niżTargetWatchFaceSafety.UNKNOWN, dostawca musi mieć uprawnieniecom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE.Dostępna jest też pamięć podręczna Androida T
CustomValueUserStyleSetting2, która może pomieścić do 12,5 KB. Poprzedni limit dlaCustomValueUserStyleSettingwynosił 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
GlesRendereriGlesRenderer2dodaliśmy opcjonalny parametreglContextAttribList, który umożliwia ustawienie wartościEGL14.EGL_CONTEXT_CLIENT_VERSIONprzekazywanej do funkcjiEGL14.eglCreateContext. (I2a83e) - Przenieśliśmy biblioteki tarcz zegarka do
androidx.core.util.Consumerzamiastjava.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
isForSafeWatchFacepowinno być stanem trójstanowymIntDef. (Ief2f7) - W przypadku Androida T wprowadziliśmy
ComplicationRequest.isForSafeWatchFace, który jest przeznaczony do użytku przez producentów OEM i wymagacom.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 dlaCustomValueUserStyleSettingwynosił 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
ComplicationSlotw 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ż jedenComplicationSlotsUserStyleSetting. Aktywny będzie tylko jedenComplicationSlotsUserStyleSetting, w zależności od wyborów stylu użytkownika.Ulepszamy obsługę czytnika ekranu w przypadku elementów
ListOptioniComplicationSlotsOption, dodając polescreenReaderName. 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
screenReaderNamedoListOptioniComplicationSlotsOption, 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ąfindComplicationSlotsOptionForUserStyledoUserStyleSchema, aby ułatwić znajdowanie aktywnegoComplicationSlotsOption, jeśli taki istnieje. (Ic2b06) RangedValuesTypeszostały przeniesione do obiektu towarzyszącegoRangedValueComplicationDatai zmieniono ich nazwy naTYPE_UNDEFINED,TYPE_RATING. Dodano też nowy elementTYPE_PERCENTAGE. (I55d02)- Zmieniliśmy nazwę eksperymentalnego
DynamicFloatnaFloatExpressioni 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:
GoalProgressComplicationDataiWeightedElementsComplicationData. GoalProgressComplicationDatajest podobny doRangedValueComplicationData, ale jego wartość może przekraczać wartość docelową (w przypadkuRangedValueComplicationDatawartość jest ograniczona do zakresu [min .. max]), co ma wpływ na projekt wizualny, który może nie pasować do wszystkich tarcz zegarka.GoalProgressComplicationDatadodaje obsługę wykresów kołowych i podobnych podziałów prostych danych.- Dodaliśmy opcjonalną obsługę właściwości
ColorRampsdo znacznikaRangedValueComplicationData. - W przypadku Androida T dodaliśmy
ComplicationPersistencePolicyisetCachePolicydoComplicationData, 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, gdzieDO_NOT_SHOW_WHEN_DEVICE_LOCKEDinformuje zgodną tarczę zegarka, aby nie wyświetlała widżetu, gdy urządzenie jest zablokowane. (Ic9574)
Zmiany w interfejsie API
GoalProgressComplicationData,WeightedElementsComplicationDataiColorRampnie są już eksperymentalne. (Ica9e2)ComplicationPersistencePolicyiComplicationDisplayPolicysą teraz prawidłowo oznaczone jako interfejsy API T. (I31d88)- Wycofany konstruktor
ComplicationSlotOverlayma terazDeprecationLevel.WARNING, co umożliwia ponowne wywoływanie go z javy. (Ib308c) - Rozwiązaliśmy problemy ze zgodnością z Java w przypadku
ComplicationRequestListener,CanvasComplication,ComplicationTapFilteriInteractiveWatchFaceClient, dodając do nich adnotację@JvmDefaultWithCompatibility(Id94fc). - Usunęliśmy eksperymentalne funkcje
ProtoLayoutComplicationDataiListComplicationData. Historia dewelopera w przypadku tych funkcji była niejasna, ale mamy nadzieję, że w przyszłości do niej wrócimy. (I9df05) - Dodaliśmy
ValueTypez powrotem doRangedValueComplicationData.WeightedElementsComplicationDataobsługuje teraz kolor tła. UsunęliśmyDiscreteRangedValueComplicationData, ponieważ jego funkcje są podzbiorem funkcjiWeightedElementsComplicationData. (I6446c)
Poprawki błędów
- Uwzględnij znak
isForScreenShotw znaku równości i kodzie skrótu. Upewnij się, żeonRenderParametersChangedma prawidłową wartośćisForScreenshot(I04a41). - Usunięto wycieki
WatchFaceControlServicez 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żrootUserStyleSettingsprzestało być eksperymentalne (Ie96e3) - Przeniesiono
rootUserStyleSettingsz eksperymentu (I8d6b3) - Oznaczyliśmy
WatchFaceColorsjako eksperymentalne, ponieważ nie jest obsługiwane przez wszystkie systemy (I6d75d). - Udostępnij
DisconnectReasonsw publicznym interfejsie API, aby działał zIntDef. (I791f8)
Poprawki błędów
- Zamknij dowolny otwarty edytor na zegarku, jeśli
SysUIsię wyłączy. JeśliSysUIprzestanie działać, a edytor tarczy zegarka nie zamknie się, tarcza może pozostać w niespójnym stanie, ponieważ system polega naSysUIw 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śmyRenderer.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
ComplicationDataobsługuje terazSmallImages.
Zmiany w interfejsie API
- Menedżer tapet może czasami odłączyć się od jednego silnika i utworzyć inny. Dodaliśmy
DisconnectReasonint def i rozszerzyliśmyClientDisconnectListenero nową metodę, która zawieraDisconnectReason, co pozwala słuchaczowi obserwować odłączanie się silnika. (I45cce) - Dodano 2 parametry opcjonalne
nameResourceIdiscreenReaderResourceIddo konstruktoraComplicationSlotOverlay(I157e8) - Dodaliśmy otoczkę Guava dla nowego przeciążenia funkcji
getOrCreateInteractiveWatchFaceClientz parametremPreviewImageUpdateRequestedListener. (Ic31f0) - Dodaliśmy parametr
Renderer.sendPreviewImageNeedsUpdateRequest, który jest przydatny w przypadku tarcz zegarka, których stan wykracza poza zakres parametruUserStyleSchemai wpływa na ich wygląd (np. tarcza zegarka z wybieralnym obrazem tła). Po stronie klienta dodaliśmyPreviewImageUpdateRequestedListenerjako parametr opcjonalny dogetOrCreateInteractiveWatchFaceClient, aby obserwować te żądania. (Iff44a) - Uprościliśmy interfejs API do udostępniania
WatchFaceColors. Teraz w obiekcie Renderer jest prosta właściwość o nazwiewatchFaceColors, którą tarcza zegarka może ustawić. W razie potrzeby należy ją aktualizować w odpowiedzi na wszelkie zmiany stylu. Zamiast używaćWallpaperManagerdo obserwowania zmian kolorów, dodaliśmyOnWatchFaceColorsListenerdoInteractiveWatchFaceClient. (I490bc) - Dodaliśmy klasę
WatchFaceColors, która zawiera 3 najbardziej widoczne kolory tarczy zegarka, oraz otwarte metodywatchfaceColorsinotifyWatchFaceColorsChangeddo klasy Renderer. Umożliwiają one systemowi uzyskanie kolorów tarczy zegarka za pomocą metodyWallpaperManager.getWallpaperColors. (I3d611) ShortTextComplicationData,RangedValueComplicationData,NoPermissionComplicationData(oraz eksperymentalneDiscreteRangedValueComplicationData,GoalProgressComplicationDataiWeightedElementsComplicationData) obsługują terazSmallImages. Jeśli tarcza zegarka renderuje komplikację w wielu kolorach, może teraz używać wielokolorowegoSmallImage, podczas gdy wcześniej musiała używać obrazu monochromatycznego. (I257df)- Zmień
PreviewImageUpdateRequestedListenernaConsumer<>(Ia875d) - Zastąpienie niestandardowego typu SAM
OnWatchfaceColorsListenerogólnym typem SAM w Javie (Consumer) (I0c489) - Wycofaliśmy stare metody
getOrCreateInteractiveWatchFaceClientilistenableGetOrCreateInteractiveWatchFaceClient, które nie określająPreviewImageUpdateRequestedListener. (Iec502)
Poprawki błędów
- Nazwa
DisconnectReason.BINDER_DIEDzostała zmieniona naDisconnectReason.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
BoundingArcnie 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
ComplciationSlotsmają 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
currentUserStyleRepositorydo metodyWatchFaceService.getComplicationSlotInflationFactory, aby zachować spójność z metodącreateComplicationSlotsManager. (I2ddd2) UserStyleFlavorsnie są już funkcją eksperymentalną. (I69cdc)- Usunęliśmy eksperymentalny symbol
ValueTypezRangedValueComplicationDatai zastąpiliśmy go eksperymentalnym symbolemDiscreteRangedValueComplicationData, który działa podobnie jakRangedValueComplicationData, ale dotyczy zakresu i wartości liczb całkowitych. Wprowadziliśmy też eksperymentalną funkcjęGoalProgressComplicationData, która jest podobna do funkcjiRangedValueComplicationData, 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ówRangedValuenależy podać co najmniej jedną z tych wartości: monochromeImage, text lub title. (I9590c) - Usunęliśmy
boundsWithMarginszComplicationSlotState, 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
ColorRampsopcjonalnie używane przezRangedValueComplicationDataiGoalProgressComplicationDataumoż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.drawSegmentedzostało zmienione navalueType, czyli liczbę całkowitą z odpowiednim elementemValueType 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
ColorRangesdoRangedValueComplicationData. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasamiComplicationDataSourcemoż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ę
drawSegmenteddoRangedValueComplicationData. 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
ComplicationSlotBoundswzglę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
pendingInitialComplicationsi zastosowany później. NiestetypendingInitialComplicationszostało zastosowane zbyt wcześnie, co oznaczało, że podczas inicjowania tarczy zegarka istniał okres, w którym widżety były nadal umieszczane napendingInitialComplicationsi ignorowane. Problem został już rozwiązany. Dodatkowo ta poprawka usuwa błąd polegający na tym, żeComplicationRenderernieprawidł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ć wielependingInitialComplications. (0d03ba3)Naprawiono potencjalny zakleszczenie w
InteractiveInstanceManager, w którymgetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstanceblokował zasób dłużej niż było to konieczne. Zwykle oczekujemy, żeengine.setUserStylebę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 funkcjirelease().StateFlowsmoże też zachowaćWatchFaceService, a anulowanie bazowegoCoroutineScopesrozwiązuje ten problem.(fd48138)Dodaj limity czasu do
awaitDeferredWatchFace* i poprawwatchfaceOverlayStyleNullPointerException. W normalnych warunkach nie powinno to powodować przekroczenia limitu czasu, w tym po świeżej instalacji i w scenariuszachDirectBoot, w których obciążenie procesora jest wysokie. Naprawiliśmy też błąd NullPointerException, który występował, gdy funkcjagetWatchfaceOverlayStylebyła wywoływana po funkcjiclose().(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
ComplicationSlotsdo 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ć
ComplicationTypedla 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. ComponentNamedostawcy 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
UserStyleSchemaiComplicationSlotsmoż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
ComplicationSlotBoundsi obsługują odwołania. Eksperymentowanie z komplikacją na krawędziBoundingArcjest kontynuowane, a jej działanie jest sprawdzane w przypadkudrawHighlight, chociaż nie zalecamy jej używania w tym czasie.
Zmiany w interfejsie API
- Dodaliśmy eksperymentalne przeciążenie funkcji
drawHighlight, które akceptuje parametrBoundingArc. (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
ComplicationSlotBoundsw formiecenter_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.closejako synchroniczne. Problem z asynchronicznym działaniem funkcjiBaseEditorSession.closepolega na tym, że zwalniamyComplicationDataSourceInfoRetrieverzbyt 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 doComplicationSloti przekazane doComplicationSlotStateiWatchFaceMetadataClient. (I61a40) - Dodaliśmy możliwość dziedziczenia ustawień w pliku
UserStyleSettingXML. Umożliwia to ograniczenie liczby słów i udostępnianie ustawień między tarczami zegarka. (Ief841) - Dodaliśmy 2 nowe eksperymentalne typy
ComplicationData:ListComplicationDataiProtoLayoutComplicationData. Obecnie nie ma obsługi renderowania żadnego z tych typów, a WearOS nie rozpoznaje ich, jeśli zostaną dodane do manifestuComplicationDataSource's. (I1811c)
Poprawki błędów
- Naprawiono serializację typu
TimeLineEntry. Nie serializowaliśmy typuTimeLineEntry, co oznaczało, że buforowane obiektyTimeLineEntriestypu 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
setComplicationDatausuwało pola osi czasu(fb392f5). - Naprawiliśmy błąd, który bardzo rzadko powodował, że znak
runBlockingWithTracingprowadził do błędu NPE(12ca62e). - Naprawiliśmy błąd, który czasami powodował wyświetlanie komunikatu
ClassNotFoundException: android.support.wearable.complications.ComplicationTextpodczas odbierania komplikacji.(217942d9) - Usuwa błąd w
GlesRenderer.backgroundThreadInitInternal, który powodował, że wywoływana była tylko funkcjaonBackgroundThreadGlContextCreated, jeśli wywoływana była funkcjaEGL14.eglCreateContext. Usunęliśmy kolejny błąd, który powodował wizualne zakłócenia na zrzucie ekranu wywołane przezverticalFlip.(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
NoDataComplicationprzechowywał 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) iHeadlessWatchFaceClient.getUserStyleFlavorszgłaszają teraz niekontrolowany wyjątek RuntimeException zamiastWatchFaceException. (I0718a) WatchFaceMetadataClient.WatchFaceExceptionzostał przeniesiony poza zajęcia, aby można było go ponownie wykorzystać. (I4e869)
Poprawki błędów
WatchFaceMetadataClientnie będzie już ulegać awarii po wysłaniu częściowegoComplicationSlotBounds.(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ącComplicationData.dataSource. Niektóre tarcze zegarka mogą używać tej informacji do dostosowywania wyświetlania widżetów. (I44a73)
Zmiany w interfejsie API
- Funkcje
Renderer.CanvasRendereriRenderer.GlesRendererzostały wycofane na rzecz funkcjiRenderer.CanvasRenderer2iRenderer.GlesRenderer2, które obsługują parametrSharedAssetsprzekazywany do metod renderowania. W przypadku współdziałania z kodem w języku Java wprowadziliśmy funkcjeListenableCanvasRenderer2iListenableGlesRenderer2. (I31ffa) - Dodano
@WatchFaceFlavorsExperimentalmożliwość definiowania wersji – wstępnie skonfigurowana lista stylizowanych tarcz zegarka (I04dd0) Renderer.sharedAssetsjest teraz StateFlow i usunęliśmy nieużywaną funkcjęRenderer.SharedAssetsFactory(I12ac5)- Środowisko wykonawcze
UserStyleSchema.userStyleSettingsnie jest już wycofane (Iba7e3) - Dodaliśmy
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash, co pozwalaHeadlessWatchFaceClientuniknąć stosunkowo niskiego narzutu związanego z przekazywaniem schematu przez AIDL przed obliczeniem skrótu. (I33597) - Dodaliśmy
isUserStyleSchemaStaticdoWatchFaceMetadataClient, co jest prawdą tylko wtedy, gdyUserStyleSchemanie może się zmienić, chyba że zaktualizowany zostanie pakiet APK tarczy zegara. (I45a3f) - Dodaliśmy do
UserStyleSchemafunkcjęgetDigestHash, która oblicza skrót schematu. Można go użyć do skutecznego określenia, czyUserStyleSchemauległ zmianie. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTEDzmienił(a) nazwę naMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED(I9ba5d)UserStyleSetting.OnWatchEditorDatazostała zmieniona naUserStyleSetting.WatchFaceEditorDatai 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
ComplicationDatamogą nie zawsze być dostępne (np. wygasłe dane ComplicationData w pamięci podręcznej), dlatego rozszerzyliśmyNoDataComplicationo opcjonalne dane ComplicationData obiektu zastępczego i dodaliśmyComplicationText.PLACEHOLDER,MonochromaticImage.PLACEHOLDER,SmallImage.PLACEHOLDERiPhotoImage.PLACEHOLDER, których można używać tylko w kontekście obiektu zastępczegoNoDataComplicationData. 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.watchFaceIdmożna teraz używać na wszystkich poziomach interfejsu API. Jego wartość będzie teraz zawsze zgodna z wartością atrybutuWatchState.watchFaceInstanceId. (I323b9)- Interfejs API
getPendingIntentForTouchEventnie 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
WatchFaceExceptionReasondoWatchFaceException, aby podać kontekst tego, co poszło nie tak. (I01d15) ComplicationDataSourceService.onImmediateComplicationRequestzostało usunięte, a zamiast niego dodanoComplicationRequest.immediateResponseRequired, aby wskazać, że dostawca musi szybko odpowiedzieć (najlepiej w czasie krótszym niż 100 ms). Pamiętaj, że ta funkcja jest chroniona przez uprawnieniecom.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.Optionnową właściwość childSettings, która jest początkowo używana tylko przezListOption. Pozwala to opisać hierarchię stylów do użytku w interfejsach edytora. Podstawowy UserStyle pozostaje bez zmian i nadal jestMap<String, ByteArray>. (Iaf6f4) - Dodaliśmy
WatchFace.OverlayStyle, który umożliwia tarczy zegarka konfigurowanie renderowania nakładki stanu systemu. (I8520d) - Wprowadziliśmy
clearWithBackgroundTintBeforeRenderingHighlightLayernowy opcjonalny parametr konstruktora dlaCanvasRenderer(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. ParametryGlesRenderer.setEglConfigiGlesRenderer.setEglDisplayzostał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.BuilderciągisetNameResourceIdisetScreenReaderNameResourceId(które odwołują się do zasobów ciągów tekstowych) oraz odpowiednie metody pobierania wandroidx.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.getUserStyleSchemaigetComplicationSlotMetadataMapzgłaszają teraz wyjątekWatchFaceExceptionzamiastRemoteException. (I86f11) onSynchronousComplicationRequesti powiązane funkcje wComplicationDataSourceServicezostały zmienione naonImmediateComplicationRequestitp. (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
@JvmOverloadsdo konstruktora ListenableGlesRenderer, aby zapewnić lepszą interoperacyjność z Java. (I2974a)
Poprawki błędów
- Konstruktor klasy
ListenableGlesRendererjest 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
PhotoImageComplicationDatatapAction (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
ComplicationDatai powiązane podklasy mają teraz zastąpione metody hashcode, equals i toString, co ułatwia pracę z nimi.
Zmiany w interfejsie API
- Metody
WatchfaceMetadataClientponownie zgłaszają wyjątkiRemoteExceptionsw odpowiednich przypadkach, co ułatwia kodowi klienta przechwytywanie błędów z tarczy zegarka. (I78785) - Klasy
ComplicationDatai 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
UserStyleSchemaiComplicationSlotsmożna teraz zdefiniować w XML. Ułatwia to tworzenie tarcz zegarka. Poza tym zapytaniaWatchFaceMetadataClientsą szybsze, ponieważ nie muszą być powiązane z usługą, aby uzyskać metadane.WatchFaceMetadataClientiListenableWatchFaceMetadataClientnie 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 wWatchState.watchFaceInstanceId.ComplicationDatajest teraz buforowany, aby komplikacje mogły być wyświetlane natychmiast po wczytaniu. CzasamiComplicationDatajest 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 funkcjaComplicationData.tapActionLostDueToSerializationzwró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 zaktualizowaneComplicationDataztapActiontak szybko, jak to możliwe.Niektóre
ComplicationDatanie 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 sekwencjiComplicationDataograniczonych 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.ComplicationRequestListenerzostał rozszerzony o nową metodęonComplicationDataTimeline, której możesz użyć do zwracania tych danych.DefaultComplicationDataSourcePolicyzostał rozszerzony, dzięki czemu możesz określićComplicationTypedla 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
PendingIntentTapListenerprawdopodobnie 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.isCachedzostał zmieniony natapActionLostDueToSerialization, 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
ComplicationDataTimelinedowear-complication-data-source. Można jej używać do dostarczania na tarczę zegarka sekwencjiComplicationDataograniczonych 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.ComplicationRequestListenerzostał rozszerzony o nową metodęonComplicationDataTimeline, której możesz użyć do zwracania tych danych. Wprowadziliśmy nowy wrapper KotlinSuspendingTimelineComplicationDataSourceServicedo zawieszania usług źródła danych. (Idecdc) - Dodano:
PendingIntentTapListeneriWatchFaceControlClient.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ą
ComplicationDatadla 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 APIWatchFaceControlClient.hasComplicationCacheprzeznaczona dla producentów OEM. Może to wpłynąć na strategię systemu dotyczącą wysyłania widżetów na tarczę zegarka. DodatkowoComplicationDatama właściwośćisCachedi zaleca się, aby buforowane komplikacje były renderowane inaczej, ponieważtapActionnie można buforować i w buforowanej komplikacji będzienull. (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 numerWatchFaceControlClient.createHeadlessWatchFaceClient. (I1ff98) - Rozszerzone
DefaultComplicationDataSourcePolicyz możliwością ustawienia domyślnegoComplicationTypesdla dostawcy podstawowego, dodatkowego i systemu rezerwowego.ComplicationSlot.defaultDataSourceTypezostało wycofane. (If0ce3) ComplicationSlot.configExtrasmożna teraz zmieniać i aktualizować przed wywołaniem funkcjiEditorSession.openComplicationDataSourceChooser(). (I6f852)- Dodano:
WatchFace.setComplicationDeniedDialogIntentisetComplicationRationaleDialogIntent. 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
UserStyleSchemaiComplicationSlotsmożna teraz zdefiniować w XML. Upraszcza to tworzenie tarcz zegarka i przyspiesza zapytaniaWatchFaceMetadataClient, 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ługujegetPendingIntentForTouchEvent. (I0b917) - Atrybuty
WatchFaceMetadataClientiListenableWatchFaceMetadataClientnie 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_SECONDSi zastąpić tagonSynchronousComplicationRequest. W zależności od charakteru źródła danych może być też konieczne zastąpienie metodonStartSynchronousComplicationRequestsionStopInteractiveComplicationRequests, 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
PhotoImageComplicationDatatapAction (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.onDestroyw 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.complicationszostały przeniesione do nowego projektuwear:watchface:watchface-complications. Pamiętaj, że nie możesz uwzględnić tej biblioteki ani żadnej poprzedniej wersji alfawear: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.addWatchFaceReadyListenernosi teraz nazwęaddOnWatchFaceReadyListener, aremoveWatchFaceReadyListenernosi teraz nazwęremoveOnWatchFaceReadyListener. (I48fea)- EditorSession
getComplicationsPreviewDataigetComplicationsDataSourceInfonie są już funkcjami zawieszającymi, ale właściwościamiStateFlow<>, których wartość początkowo wynosi null. W klasie ListenableEditorSession usunięto polagetListenableComplicationPreviewDataigetListenableComplicationsProviderInfona rzecz nowych obiektówStateFlow<>z klasy bazowej. Jeśli chcesz posłuchać zmian w kodzie Java, możesz użyćandroidx.lifecycle.FlowLiveDataConversions.asLiveData, aby przekonwertować go naLiveData<>. (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.wearWatchface i Complications do grupy bibliotekandroidx.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)