Tarcze zegarka Wear
Uwaga: od 10 lipca 2024 r. Format tarczy zegarka jest wymagany, aby można było instalować tarcze zegarka na urządzeniach z wstępnie zainstalowanym Wear OS 5, a od 27 stycznia 2025 r. – aby można było instalować nowe tarcze zegarka w Google Play.
Więcej informacji o zmianach dla użytkowników znajdziesz w tym artykule w Centrum pomocy.
Ostatnia aktualizacja | Wersja stabilna | Wersja kandydująca | Wersja Beta | Wersja alfa |
---|---|---|---|---|
15 stycznia 2025 r. | 1.2.1 | - | - | 1.3.0-alpha05 |
Deklarowanie zależności
Aby dodać zależność od Wear, musisz dodać repozytorium Google Maven do projektu. Więcej informacji znajdziesz w repozytorium Maven firmy Google.
Dodaj zależności dla artefaktów, których potrzebujesz, w pliku build.gradle
aplikacji lub modułu:
Odlotowe
dependencies { // Use to implement wear watchfaces implementation "androidx.wear.watchface:watchface:1.2.1" // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation "androidx.wear.watchface:watchface-editor:1.2.1" // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Kotlin
dependencies { // Use to implement wear watchfaces implementation("androidx.wear.watchface:watchface:1.2.1") // Use to implement wear watchface complications implementation "androidx.wear.watchface:watchface-complications-data-source:1.2.1" // (Kotlin-specific extensions) implementation "androidx.wear.watchface:watchface-complications-data-source-ktx:1.2.1" // Use to implement a watchface style and complication editor implementation("androidx.wear.watchface:watchface-editor:1.2.1") // Can use to render complications. // This library is optional and watchfaces may have custom implementation for rendering // complications. implementation "androidx.wear.watchface:watchface-complications-rendering:1.2.1" }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Opinia
Twoja opinia pomoże nam ulepszyć Jetpacka. Daj nam znać, jeśli zauważysz nowe problemy lub masz pomysły na ulepszenie tej biblioteki. Zanim utworzysz nowy problem, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz zagłosować na istniejący problem, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.3
Wersja 1.3.0-alpha05
15 stycznia 2025 r.
androidx.wear.watchface:watchface-*:1.3.0-alpha05
został zwolniony. Wersja 1.3.0-alpha05 zawiera te komity.
Nowe funkcje
Tarcze zegarka zwykle umożliwiają użytkownikowi wybór kolorów za pomocą ListUserStyle
. Chociaż to działa, wymaga wysyłania ikon przez Bluetooth do edytora towarzyszącego, co jest niewydajne, więc wprowadziliśmy ColorUserStyleSetting
, gdzie ładunek to lista co najmniej jednego koloru na styl, która ma znacznie bardziej zwarty format transmisji.
Dodaliśmy funkcję dla OEM, która umożliwia dostawcom widżetów OEM dodawanie dodatkowych informacji do danych widżetu na potrzeby tarcz OEM.
Zmiany w interfejsie API
- Klasy
UserStyleSetting
iUserStyleOption
mają teraz kreatory, które są zalecanym sposobem ich tworzenia. (Iacd03) - Obsługa przekazywania dodatkowych informacji w funkcji
ComplicationData
. Jest on przeznaczony dla producentów urządzeń oryginalnych, którzy kontrolują zarówno dostawcę widżetu, jak i tarczę zegarka, na której ma on być wyświetlany. Ustawienie dodatku wymaga uprawnieniacom.google.android.wearable.permission.COMPLICATION_EXTRAS
o wysokich uprawnieniach. (I4e3b2) - Tarcze zegarka zwykle umożliwiają użytkownikowi wybór kolorów za pomocą
ListUserStyle
, z ikoną dla każdegoListOption
. SchematyUserStyle
są wysyłane przez Bluetooth, dlatego ważne jest, aby ich rozmiar był jak najmniejszy. Może to być problemem, jeśli ze względu na wszystkie te ikony jest wiele opcji kolorów. Aby ułatwić Ci to zadanie, dodaliśmy opcjęColorUserStyleSetting
, która zawiera listę kolorów zamiast ikony, co jest znacznie bardziej kompaktowe. (Ib542e) ColorUserStyleSetting
iColorOption
wymagają interfejsu API 34. (I8771d)
Poprawki błędów
- Ta biblioteka korzysta teraz z adnotacji JSpecify dotyczących nullowości, które są używane w ramach typu. Deweloperzy Kotlina powinni używać tych argumentów kompilatora, aby wymusić prawidłowe użycie:
-Xjspecify-annotations=strict
,-Xtype-enhancement-improvements-strict-mode
(Ifd363, b/326456246).
Wersja 1.3.0-alpha04
18 września 2024 r.
androidx.wear.watchface:watchface-*:1.3.0-alpha04
został zwolniony. Wersja 1.3.0-alpha04 zawiera te komity.
Nowe funkcje
- Dodaliśmy obsługę leniwego wczytywania ikon w
UserStyleSettings
iUserStyleOptions
, co poprawia wydajność wczytywania tarcz zegarka. (Iaf43d) - Dodano opcję umożliwiającą zrobienie zaktualizowanego zrzutu ekranu, gdy tylko zmieni się konfiguracja systemu (np. lokalizacja) za pomocą nowego
Watchface.setUpdateScreenshotOnConfigurationChange
. Domyślnie to ustawienie jest wyłączone (I765a1).
Poprawki błędów
- Usunięto ręczne określanie dostępu do nowych interfejsów API platformy, ponieważ odbywa się to automatycznie za pomocą modelowania interfejsu API podczas korzystania z R8 z AGP 7.3 lub nowszym (np. R8 w wersji 3.3) oraz we wszystkich wersjach kompilacji przy użyciu AGP 8.1 lub nowszego (np. D8 w wersji 8.1). Klienci, którzy nie korzystają z AGP, powinni zaktualizować D8 do wersji 8.1 lub nowszej. Więcej szczegółów znajdziesz w tym artykule. (Ia60e0, b/345472586)
Wersja 1.3.0-alpha03
17 kwietnia 2024 r.
androidx.wear.watchface:watchface-*:1.3.0-alpha03
został zwolniony. Wersja 1.3.0-alpha03 zawiera te komity.
Zmiany w interfejsie API
- Dodaliśmy funkcję
EditorSession#setOverrideComplications
, która tymczasowo ustawiaComplicationData
instancji tarczy zegarka podczas edycji. Jeśli komplikacje zmieniają się rzadko, jest to bardziej wydajne niż przekazywanie zastąpień za pomocąEditorSession#renderWatchFaceToBitmap
. (I19384)
Poprawki błędów
- Wcześniej funkcja
selectComplicationDataForInstant
wywoływała funkcjętoApiComplicationData
w przypadku dowolnej osi czasu, co oznacza, że kolejny test równości odwołania zawsze zawieszał się. Oznaczało to, że komplikacje były wczytywane w każdej klatce, co powodowało zużycie baterii. (717406)
Wersja 1.3.0-alpha02
3 kwietnia 2024 r.
androidx.wear.watchface:watchface-*:1.3.0-alpha02
został zwolniony. Wersja 1.3.0-alpha02 zawiera te komity.
Nowe funkcje
- Teraz używamy równości referencyjnej do porównywania wartości best i
selectedData
, ponieważ operator równości jest kosztowny. (446b00)
Zmiany w interfejsie API
- Dodaliśmy interfejs API dynamiczny
GoalProgressComplicationData
bez możliwości korzystania z awaryjnego rozwiązania. (c33264)
Wersja 1.3.0-alpha01
7 lutego 2024 r.
androidx.wear.watchface:watchface-*:1.3.0-alpha01
został zwolniony. Wersja 1.3.0-alpha01 zawiera te commity.
Nowe funkcje
- Obiekty
WatchFaceServices
można inicjować równolegle, dlatego powinny być bezstanowe. Aby to umożliwić, dodaliśmy obiektStatefulWatchFaceService
, w którym dodatkowy obiekt zdefiniowany przez użytkownika i utworzony przezcreateExtra()
jest przekazywany do wszystkich zastąpień wywoływanych podczas inicjalizacji. GlesRenderer2
ma teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów, które mają być kolejno próbowane w funkcjieglChooseConfig
.
Zmiany w interfejsie API
StatefulWatchFaceService
obsługuje teraz zastąpieniegetComplicationSlotInflationFactory
, do którego przekazywana jest dodatkowa wartość zdefiniowana przez użytkownika przezcreateExtra()
. (I82d9f)- Niektóre tarcze zegarka muszą udostępniać dane pomocnicze utworzone podczas
createUserStyleSchema
innym metodom inicjowania. Ponieważ nie było lepszej alternatywy, programiści zwykle tworzyliWatchFaceServices
z uwzględnieniem stanu. Jest to niebezpieczne, ponieważ może doprowadzić do utworzenia wielu instancji jednocześnie, co może spowodować błędy. Aby rozwiązać ten problem, wprowadziliśmy typyStatefulWatchFaceService
iStatefulWatchFaceRuntimeService
, w których typ zdefiniowany przez użytkownika jest tworzony przez funkcjęcreateExtra()
i przekazywany różnym metodom tworzenia jako parametr. (If8a99) - Dodaliśmy
getUserStyleFlavors
doInteractiveWatchFaceClient
, co jest interesujące głównie dla producentów OEM. (I0f5d8) GlesRenderer2
ma teraz przeciążenie konstruktora, które umożliwia określenie listy atrybutów, które mają być kolejno próbowane w funkcjieglChooseConfig
. Dzięki temu możesz najpierw wypróbować konfigurację z wygładzaniem krawędzi, a w razie potrzeby przejść do konfiguracji bez tego ustawienia. (I1ba74)- W ramach Android U do Wear OS zostanie dodana obsługa
SystemDataSources.DATA_SOURCE_HEART_RATE
. Ta widżet jest obsługiwany tylko w przypadku widżetówSHORT_TEXT
, ale zalecamy, abyComplicationSlot
obsługiwał teżSMALL_IMAGE
, ponieważ producenci urządzeń mogą wyświetlać skrót do swojej aplikacji do zdrowia zamiast bieżącej wartości. (I34223) - Dodaliśmy
METADATA_KEY_CONFIG_RESTORE_SUPPORTED
, który od Androida U w górę określa, co się dzieje, gdy system jest przywracany z kopii zapasowej dla źródła danych widżetu za pomocąMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
. Domyślnie system zakłada, że usługa źródła danych komplikacji obsługuje tworzenie kopii zapasowych wszystkich danych konfiguracji, ale jeśli tak nie jest, może dodać ustawienie metadanychMETADATA_KEY_DATA_SOURCE_CONFIG_ACTION
na wartość false, co spowoduje oznaczenie slotu komplikacji jako nieskonfigurowanego. (I6c505)
Wersja 1.2
Wersja 1.2.1
24 stycznia 2024 r.
androidx.wear.watchface:watchface-*:1.2.1
został zwolniony. Wersja 1.2.1 zawiera te zatwierdzenia.
Poprawki błędów
- Usunięto problem z zawieszaniem się aplikacji na zegarkach Samsung Galaxy Watch 4, 5 i 6. (43f0b0)
Wersja 1.2.0
29 listopada 2023 r.
androidx.wear.watchface:watchface-*:1.2.0
został zwolniony. Wersja 1.2.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.1.0
- Dodaliśmy obsługę kilku nowych typów widżetów, które są dostępne w Androidzie T:
GoalProgressComplicationData
, która jest podobna doRangedValueComplicationData
, z tym że służy do obliczania postępu w realizacji celu, w którym wartość minimalna jest domyślnie równa 0, a wartość dopuszczalna może być większa niżtargetValue
.WeightedElementsComplicationData
, który składa się z tablicy elementów (par wagi i koloru) oraz opcjonalnego tekstu, tytułu lub obrazu. Dane te mogą być wyświetlane jako wykres kołowy, w którym kolory muszą być znaczące w danym kontekście, ponieważ w kompilacji zwykle nie ma miejsca na renderowanie etykiet.
- Dodaliśmy obsługę opcjonalnej właściwości
ColorRanges
do znacznikaRangedValueComplicationData
. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasamiComplicationDataSource
jest najlepszym miejscem do ustawiania kolorów, np. gdy mają one szczególne znaczenie semantyczne. np. czerwony na niebieski w przypadku temperatury. - Obecnie prawie każdy typ
ComplicationData
obsługujeSmallImages
. - Dodaliśmy
ComplicationDisplayPolicy
, gdzieDO_NOT_SHOW_WHEN_DEVICE_LOCKED
instruuje zgodną tarczę zegarka, aby nie wyświetlała widżetu, gdy urządzenie jest zablokowane. - W Androidzie T producenci OEM będą mogli określić, czy prośba o komplikację pochodzi z tarczy zegarka na liście zdefiniowanej przez metadane
android.support.wearable.complications.SAFE_WATCH_FACES
w pliku manifestu dostawcyComplicationRequest#isForSafeWatchFace
. Do odbierania czegokolwiek innego niż „TargetWatchFaceSafety.UNKNOWN” dostawca będzie potrzebować uprawnieniacom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. - Funkcja
UserStyleFlavors
przestała być eksperymentalna.
Wersja 1.2.0-rc01
18 października 2023 r.
androidx.wear.watchface:watchface-*:1.2.0-rc01
został zwolniony. Wersja 1.2.0-rc01 zawiera te zatwierdzenia.
Wersja 1.2.0-beta02
6 września 2023 r.
androidx.wear.watchface:watchface-*:1.2.0-beta02
został zwolniony. Wersja 1.2.0-beta02 zawiera te commity.
Nowe funkcje
- Użytkownik
SuspendingComplicationDataSourceService#onDestroy
jest teraz dostępny. Pamiętaj, że usunęliśmy obsługę domyślnego widżetu pogody.
Zmiany w interfejsie API
- Cofnij „Ujawnij nowe źródło danych dla widżetów pogody”. (I6f335)
Wersja 1.2.0-beta01
23 sierpnia 2023 r.
androidx.wear.watchface:watchface-*:1.2.0-beta01
został zwolniony. Wersja 1.2.0-beta01 zawiera te commity.
Nowe funkcje
- Od wersji Android T WearOS będzie obsługiwać domyślną komplikację pogody.
Zmiany w interfejsie API
- Dodaj domyślny system pogody jako alternatywę dla widżetów. (Ia0994)
- Ta poprawka dodaje
WatchFaceRuntimeService
iWatchFaceControlClient.createWatchFaceRuntimeControlClient
oraz owijarki guava. Dodają one obsługę czasów działania tarczy zegarka, czyli specjalnego rodzaju tarczy, która wczytuje definicję z innego pakietu. Obecnie WearOS obsługuje tylko środowisko uruchomieniowe dla formatu tarczy zegarka Androida. (I2799f) - Ta poprawka jest kontynuacją poprawki aosp/2636578, w której zmieniliśmy nazwy definicji int, więc nie trzeba zmieniać kodu zależnego od
WatchFaceType
,CanvasType
,TapType
aniComplicationsSlotBoundsType
. (I4098b) - zaktualizowane pliki interfejsu API, aby dodać adnotacje do pomijania zgodności; (I8e87a, b/287516207)
- Ta poprawka udostępnia stałe
WatchFaceType
w funkcjiWatchFaceTypes
, stałeCanvasType
w funkcjiCanvasTypes
, stałeTapType
w funkcjiTapTypes
oraz stałeComplicationsSlotBoundsType
w funkcjiComplicationsSlotBoundsType
. (I3b85a, b/288750666) WatchFace.OverlayStyle
jest bardzo rzadko używany i nie jest dobrze obsługiwany przez producentów OEM, dlatego obniżamy jego wartość z zamiarem usunięcia go w przyszłości. (I7344a)
Wersja 1.2.0-alpha09
21 czerwca 2023 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha09
został zwolniony. Wersja 1.2.0-alpha09 zawiera te commity.
Nowe funkcje
RangedValueComplicationData.Builder
obsługuje terazDynamicFloat
, a nowa klasaDynamicComplicationText
jest dostępna jako podklasa klasyComplicationText
. Obie mogą korzystać z wyrażeń dynamicznych oraz powiązań z platformą, które są aktualizowane z częstotliwością 1 Hz na obsługiwanych urządzeniach Wear 4.
Zmiany w interfejsie API
- Dodano dynamiczne typy dystansu, kalorii i pięter na dzień. Klucze źródeł danych o zdrowiu platformy są teraz dostępne w sekcji
PlatformHealthSources.Keys
(Ib7637) - W celu udostępniania tętna i liczby kroków na dzień użyj elementu
PlatformDataProvider
. InterfejsSensorGateway
został usunięty z publicznego interfejsu API. (I55b84) - Zmień nazwę interfejsu
StateEntryValue
naDynamicDataValue
i zaktualizuj interfejsy API stanu, aby używać interfejsuDynamicDataKey
. (If1c01) - Dodaj
AppDataKey
, aby uzyskać dostęp do stanu aplikacji przesyłanej strumieniowo; dodajPlatformDataKey
, aby uzyskać dostęp do danych platformy; dodaj obsługę przestrzeni nazw wStateStore
. (I7985e) - Metody
enable
/disablePlatformSource
zostały usunięte z poziomuDynamicTypeEvaluator
. Osoba dzwoniąca powinna być odpowiedzialna za aktualizacje. (I78c6d) - Umożliwianie ograniczania rozmiaru powiązanych typów danych. (Ie2966)
Wersja 1.2.0-alpha08
19 kwietnia 2023 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha08
został zwolniony. Wersja 1.2.0-alpha08 zawiera te zatwierdzenia.
Nowe funkcje
- Od Androida T dostawcy widżetów z uprawnieniami
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
mogą rejestrować metadaneandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
, które zastępująandroid.support.wearable.complications.SUPPORTED_TYPES
w przypadku bezpiecznych tarcz zegarka. Oznacza to, że dostawca może wyświetlać różne typy tarcz zaufanym i niezaufanym użytkownikom.
Zmiany w interfejsie API
- Propagowanie klasy
@Deprecated
do właściwości (I882d1, b/271441831) - Zmieniono nazwę parametru wartości
Enum.valueOf
(Ia9b89) - Więcej wyjątków zgłaszanych przez metodę valueOf (I818fe)
- Usunęliśmy
renderWatchFaceToSurface
na rzeczcreateRemoteWatchFaceView
, która jest zbudowana na podstawie SurfaceControlViewHost i pozwala wywołującemu wstawić widok z tarczy zegarka, który jest renderowany, gdy klient wywołujeRemoteWatchFaceViewHost#renderWatchFace
. (Ib311d) - Dodano użytkownika
renderWatchFaceToSurface
do Dysków zespołowychInteractiveWatchFaceClient
,HeadlessWatchFaceClient
iEditorSession
. Zazwyczaj będzie to wydajniejsze niż renderowanie do formatu bitmapy. (Ieacad) - Nazwa
ObservableStateStore
została zmieniona naStateStore
. (Ieb0e2) - Zamiast argumentów konstruktora dodano argument
DynamicTypeEvaluator.Builder
, aby umożliwić stosowanie większej liczby argumentów opcjonalnych, w tymObservableStateStore
, który domyślnie jest pustym sklepem. (I6f832) - Zmieniono kolejność parametrów w funkcji
DynamicTypeEvaluator
. (Ic1ba4) - Do metod
DynamicTypeEvaluator.bind
dodano wykonawcę. (I346ab) - Do metody
BoundDynamicType
dodaliśmy metodęstartEvaluation
, aby wywołać ocenę po związaniu typu dynamicznego. (I19908) - Dostawcy widżetów z uprawnieniami
com.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
mogą rejestrować metadaneandroidx.wear.watchface.complications.datasource.SAFE_WATCH_FACE_SUPPORTED_TYPES
, które zastępują metadaneandroid.support.wearable.complications.SUPPORTED_TYPES
w przypadku bezpiecznych tarcz zegarka. (Id1c73) - Zmieniliśmy nazwę
CustomValueUserStyleSettings2
naLargeCustomValueUserStyleSettings
. (Ic17ac)
Poprawki błędów
DynamicTypeValueReceiver#onPreUpdate
został(a) usunięty(a). (I2dc35)
Wersja 1.2.0-alpha07
22 lutego 2023 roku
androidx.wear.watchface:watchface-*:1.2.0-alpha07
został zwolniony. Wersja 1.2.0-alpha07 zawiera te commity.
Nowe funkcje
W Androidzie T producenci OEM będą mogli określić, czy prośba o komplikację pochodzi z tarczy zegarka na liście zdefiniowanej przez metadane
android.support.wearable.complications.SAFE_WATCH_FACES
w pliku manifestu dostawcy.ComplicationRequest#isForSafeWatchFace
Aby otrzymywać inne dane niżTargetWatchFaceSafety.UNKNOWN
, dostawca będzie potrzebować uprawnieniacom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
.Dostępny jest też format Android T
CustomValueUserStyleSetting2
, który może pomieścić do 12,5 KB. Poprzedni limit dlaCustomValueUserStyleSetting
wynosił 1 KB. Pomimo zwiększenia limitów rozmiaru deweloperzy tarcz zegarka powinni ograniczać ilość danych, ponieważ podczas edycji ustawienia są wysyłane przez Bluetooth, a pasmo Bluetooth jest ograniczone.
Zmiany w interfejsie API
- Do parametrów
GlesRenderer
iGlesRenderer2
dodaliśmy opcjonalny parametreglContextAttribList
, który umożliwia ustawienie wartościEGL14.EGL_CONTEXT_CLIENT_VERSION
przekazywanej do parametruEGL14.eglCreateContext
. (I2a83e) - Biblioteki tarcz zegarka zostały przeniesione do
androidx.core.util.Consumer
zamiastjava.util.function.Consumer
. (I273f5) - Więcej wyjątków zgłaszanych przez metody dostępu do właściwości KT (Iff9d9)
- Dodaliśmy
InteractiveWatchFaceClient.isComplicationDisplayPolicySupported
, aby klient mógł określić, czy musi emulować obsługę w imieniu starych tarcz zegarka. (I24c89) - Postanowiliśmy, że
isForSafeWatchFace
powinien mieć 3 stanyIntDef
. (Ief2f7) - W Androidzie T wprowadziliśmy
ComplicationRequest.isForSafeWatchFace
, który jest przeznaczony dla producentów OEM i wymagacom.google.wear.permission.GET_IS_FOR_SAFE_WATCH_FACE
. W przypadku źródeł danych w systemie obrazowym zwróci wartość „prawda”, jeśli tarcza zegarka, która wysyła żądanie, znajduje się na liście bezpiecznych tarcz zegarka określonej przez źródło danych w jego pliku manifestu. (I0cbb6) - W przypadku Androida T dodaliśmy
CustomValueUserStyleSetting2
, który może pomieścić do 12,5 KB. Poprzedni limit dlaCustomValueUserStyleSetting
wynosił 1 KB. (I0b100)
Wersja 1.2.0-alpha06
25 stycznia 2023 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha06
został zwolniony. Wersja 1.2.0-alpha06 zawiera te commity.
Nowe funkcje
- Pracujemy nad dodaniem obsługi wiązań platformy komplikacji, ale nie jest to jeszcze możliwe. Zachęcamy do śledzenia naszych informacji.
- Dodaliśmy obsługę XML
ComplicationSlot
dla nowych typów widżetów, GOAL_PROGRESS i WEIGHTED_ELEMENTS.
Poprawki błędów
- Rozwiązanie problemu polegającego na tym, że edytor tarczy zegarka nie był prawidłowo udostępniany na urządzeniach Samsung. (3b5987)
- Naprawiono błąd polegający na tym, że czasami widżety nie wyświetlały się prawidłowo podczas przełączania się między tarczami z wieloma ulubionymi. (b38ece)
- Naprawiono błąd serializacji związany z nazwami opcji dla czytników ekranu, który powodował awarie tarczy zegarka. (e9f466)
Wersja 1.2.0-alpha05
7 grudnia 2022 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha05
został zwolniony. Wersja 1.2.0-alpha05 zawiera te commity.
Nowe funkcje
Niedawno dodaliśmy obsługę hierarchicznej
UserStyleSettings
, a od Androida T można mieć w hierarchii więcej niż 1ComplicationSlotsUserStyleSetting
. Na podstawie wybranego przez użytkownika stylu aktywny będzie tylko jedenComplicationSlotsUserStyleSetting
.Ulepszamy obsługę czytników ekranu w przypadku funkcji
ListOption
iComplicationSlotsOption
przez dodanie polascreenReaderName
. Pamiętaj, że przed Androidem T to pole będzie ignorowane przez edytory towarzyszące.
Zmiany w interfejsie API
- Do pól
ListOption
iComplicationSlotsOption
dodaliśmy nowe opcjonalne polescreenReaderName
, które może być używane przez edytorów. Na urządzeniach z Androidem T i starszym pole to będzie ignorowane przez edytorów w aplikacji Companion. (I75326) - Od Androida T w hierarchii stylów można używać wielu elementów
ComplicationSlotsUserStyleSettings
, o ile w danym momencie aktywny może być tylko jeden z nich. Do funkcjiUserStyleSchema
dodaliśmy funkcję użytecznościfindComplicationSlotsOptionForUserStyle
, aby ułatwić znalezienie aktywnej funkcjiComplicationSlotsOption
, jeśli taka istnieje. (Ic2b06) - Obiekty
RangedValuesTypes
zostały przejęte przez obiekt towarzyszącyRangedValueComplicationData
i przemianowane naTYPE_UNDEFINED
,TYPE_RATING
oraz nowy obiektTYPE_PERCENTAGE
. (I55d02) - Zmieniliśmy nazwę eksperymentalnej wersji
DynamicFloat
naFloatExpression
i oznaczyliśmy ją jako@hide
. (Idf4f1) - Dodawanie adnotacji
@JvmDefaultWithCompatibility
(I8f206)
Wersja 1.2.0-alpha04
9 listopada 2022 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha04
został zwolniony. Wersja 1.2.0-alpha04 zawiera te commity.
Nowe funkcje
- W Androidzie T dodaliśmy obsługę 2 nowych typów widżetów:
GoalProgressComplicationData
iWeightedElementsComplicationData
. - Atrybut
GoalProgressComplicationData
jest podobny do atrybutuRangedValueComplicationData
, ale jego wartość może być większa od wartości docelowej (w przypadku atrybutuRangedValueComplicationData
wartość jest ograniczona do zakresu [min .. max]), co ma konsekwencje dla projektu wizualnego, który może nie pasować do wszystkich tarcz zegarka. GoalProgressComplicationData
dodaje obsługę wykresów kołowych i podobnych podziałów prostych danych.- Dodaliśmy opcjonalną obsługę właściwości
ColorRamps
do znacznikaRangedValueComplicationData
. - W przypadku Androida T dodaliśmy do
ComplicationData
wartościComplicationPersistencePolicy
isetCachePolicy
, które umożliwiają dostawcy określenie, czy komplikacja ma być zachowana (czyli czy ma być zapisana w pamięci podręcznej po ponownym uruchomieniu). Większość widżetów nie wymaga ustawiania kontroli pamięci podręcznej, ale może to pomóc w rozwiązaniu problemów z nieaktualnymi danymi w przypadku niektórych widżetów, które są często aktualizowane (np. widżetów danych o zdrowiu). Dodaliśmy teżComplicationDisplayPolicy
, gdzieDO_NOT_SHOW_WHEN_DEVICE_LOCKED
instruuje zgodną tarczę zegarka, aby nie wyświetlała widżetu, gdy urządzenie jest zablokowane. (Ic9574)
Zmiany w interfejsie API
- Usługi
GoalProgressComplicationData
,WeightedElementsComplicationData
iColorRamp
nie są już eksperymentalne. (Ica9e2) - Interfejsy
ComplicationPersistencePolicy
iComplicationDisplayPolicy
są teraz prawidłowo oznaczone jako interfejsy T. (I31d88) - Wycofany konstruktor
ComplicationSlotOverlay
ma teraz parametrDeprecationLevel.WARNING
, który umożliwia jego ponowne wywołanie z języka Java. (Ib308c) - Rozwiązaliśmy niektóre problemy z kompatybilnością z językiem Java w przypadku wersji
ComplicationRequestListener
,CanvasComplication
,ComplicationTapFilter
iInteractiveWatchFaceClient
, dodając do nich adnotacje@JvmDefaultWithCompatibility
(Id94fc). - Usunęliśmy eksperymentalne opcje
ProtoLayoutComplicationData
iListComplicationData
. Informacje o tych funkcjach były niejasne, ale mamy nadzieję, że uda nam się zająć tym tematem w przyszłości. (I9df05) - Dodaliśmy do
ValueType
komponentValueType
.RangedValueComplicationData
WeightedElementsComplicationData
obsługuje teraz kolor tła. UsunęliśmyDiscreteRangedValueComplicationData
, ponieważ jego funkcje są podzbiorem funkcjiWeightedElementsComplicationData
. (I6446c)
Poprawki błędów
- W znaku równości i w znaku krzyżyka musi być zawarta wartość
isForScreenShot
. Upewnij się, że elementonRenderParametersChanged
ma prawidłową wartośćisForScreenshot
(I04a41) - Rozwiązano problem z wyciekami
WatchFaceControlService
z klientów bez głowy. (e90e00)
Wersja 1.2.0-alpha03
5 października 2022 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha03
został zwolniony. Wersja 1.2.0-alpha03 zawiera te commity.
Nowe funkcje
- Nie ma nowych funkcji, ale naprawiliśmy kilka błędów w edytorze tarczy zegarka.
Zmiany w interfejsie API
- Wycofanie środowiska wykonawczego
UserStyleSchema.userStyleSettings
, ponieważ środowiskorootUserStyleSettings
przestało być eksperymentalne (Ie96e3) - Przenieś
rootUserStyleSettings
z wersji eksperymentalnej (I8d6b3) - Oznaczyliśmy
WatchFaceColors
jako funkcję eksperymentalną, ponieważ nie jest ona obsługiwana przez wszystkie systemy (I6d75d) - Udostępnij
DisconnectReasons
w interfejsie API publicznego, aby działał zIntDef
. (I791f8)
Poprawki błędów
- Zamknij wszystkie otwarte edytory na zegarku, jeśli
SysUI
się rozładuje. JeśliSysUI
się wyłączy, a edytor tarczy zegarka nie zostanie zamknięty, tarcza może pozostać w niezgodnym stanie, ponieważ system polega naSysUI
, aby zachować wszelkie zmiany stylu użytkownika.(ba762a - Naprawiono wyciek pamięci w
ComplicationDataSourceInfoRetriever
, gdzie kontynuacja coroutine w Kotlin działała jako root gc i zatrzymywała aktywność edytora (33ee06).
Wersja 1.2.0-alpha02
21 września 2022 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha02
został zwolniony. Wersja 1.2.0-alpha02 zawiera te commity.
Nowe funkcje
Niektóre tarcze mają konfigurację poza
UserStyle
, która wpływa na ich wygląd (np. wybór zdjęcia tła). DodaliśmyRenderer.sendPreviewImageNeedsUpdateRequest
, który umożliwia tarczy zegarka wysłanie prośby o zaktualizowany obraz podglądu. Pamiętaj, że wymaga to odpowiedniej aktualizacji systemu.Dodaliśmy też interfejs API dla tarcz zegarka, aby udostępnić ich kolory systemowi, który może na ich podstawie wybrać paletę kolorów. Uwaga: ta funkcja została wprowadzona w eksperymentalnej wersji w następnym pakiecie poprawek.
Obecnie prawie każdy typ
ComplicationData
obsługujeSmallImages
.
Zmiany w interfejsie API
- Menedżer tapet może czasami odłączyć się od jednego silnika i utworzyć inny. Dodaliśmy definicję
DisconnectReason
i rozszerzyliśmyClientDisconnectListener
o nową metodę, która zawieraDisconnectReason
, co pozwala słuchaczowi obserwować odłączanie się silnika. (I45cce) - Do konstruktora
ComplicationSlotOverlay
dodano 2 opcjonalne parametry:nameResourceId
iscreenReaderResourceId
(I157e8). - Dodaliśmy opakowanie guava dla nowej przeciążenia
getOrCreateInteractiveWatchFaceClient
zPreviewImageUpdateRequestedListener
. (Ic31f0) - Dodaliśmy
Renderer.sendPreviewImageNeedsUpdateRequest
, co jest przydatne w przypadku tarcz zegarka, które mają stan pozaUserStyleSchema
, który wpływa na ich wygląd (np. tarcza zegarka z możliwością wyboru obrazu tła). Po stronie klienta dodaliśmy parametrPreviewImageUpdateRequestedListener
jako opcjonalny parametr do parametrugetOrCreateInteractiveWatchFaceClient
, aby obserwować te żądania. (Iff44a) - Uprościliśmy interfejs API udostępniający funkcję
WatchFaceColors
. Teraz w renderze jest prosta właściwość o nazwiewatchFaceColors
, którą może ustawić tarcza zegarka. Należy ją zaktualizować w sposób odpowiedni do zmian w stylu. Zamiast używaćWallpaperManager
do obserwowania zmian kolorów, dodaliśmyOnWatchFaceColorsListener
doInteractiveWatchFaceClient
. (I490bc) - Dodaliśmy klasę
WatchFaceColors
, która zawiera 3 najbardziej widoczne kolory tarczy zegarka. Dodaliśmy też do Renderera otwarte metodywatchfaceColors
inotifyWatchFaceColorsChanged
, które umożliwiają systemowi uzyskanie kolorów tarczy zegarka za pomocąWallpaperManager.getWallpaperColors
. (I3d611) ShortTextComplicationData
,RangedValueComplicationData
,NoPermissionComplicationData
(oraz eksperymentalneDiscreteRangedValueComplicationData
,GoalProgressComplicationData
iWeightedElementsComplicationData
) obsługują terazSmallImages
. Jeśli tarcza zegarka zdecyduje się na renderowanie widżetu w wielu kolorach, będzie mogła użyć wielokolorowegoSmallImage
, podczas gdy wcześniej musiała używać obrazu monochromatycznego. (I257df)- Zmień
PreviewImageUpdateRequestedListener
naConsumer<>
(Ia875d) - Zastąp niestandardowy typ pojedynczej abstrakcyjnej metody (SAM)
OnWatchfaceColorsListener
ogólnym typem SAM w Javie (konsumencki) (I0c489) - Wycofujemy stare metody
getOrCreateInteractiveWatchFaceClient
ilistenableGetOrCreateInteractiveWatchFaceClient
, które nie określają parametruPreviewImageUpdateRequestedListener
. (Iec502)
Poprawki błędów
- Nazwa
DisconnectReason.BINDER_DIED
została zmieniona naDisconnectReason.ENGINE_DIED
. (I4eb0e)
Wersja 1.2.0-alpha01
10 sierpnia 2022 r.
androidx.wear.watchface:watchface-*:1.2.0-alpha01
został zwolniony. Wersja 1.2.0-alpha01 zawiera te commity.
Nowe funkcje
- Dodaliśmy obsługę różnych nowych formatów widżetów w ramach eksperymentu. Jest to obszar, nad którym aktywnie pracujemy. Nowe formaty mogą ulec zmianie bez powiadomienia. Obecnie nie ma obsługi w rendererze
CanvasComplicationDrawable
. - Dodaliśmy też opcjonalne marginesy do slotów widżetów, dzięki czemu łatwiej jest klikać małe widżety.
Zmiany w interfejsie API
- Eksperymentalna klasa
BoundingArc
jest teraz niezmienna. (If624a) - Małe widżety mogą być trudne do kliknięcia. Aby temu zaradzić, wprowadziliśmy obsługę marginesów, które zwiększają obszar dotykowy bez wpływu na renderowanie. O ile nie określono inaczej (w kodzie lub w pliku XML), elementy
ComplciationSlots
mają zerowe marginesy. (I14089) - Zmieniono podpis
getComplicationSlotInflationFactory(CurrentUserStyleRepository)
, aby zwracał instancję fabryki inną niż null. Wcześniej zwracanie wartości null było błędem, więc teraz umowa interfejsu API jest bardziej przejrzysta. (I0fcc0) - Dodaliśmy argument
currentUserStyleRepository
do metodyWatchFaceService.getComplicationSlotInflationFactory
, aby zachować spójność z metodącreateComplicationSlotsManager
. (I2ddd2) UserStyleFlavors
stała się funkcją nieeksperymentalną. (I69cdc)- Usunęliśmy z poziomu
ValueType
eksperymentalny poziomValueType
, a zamiast niego wprowadziliśmy eksperymentalny poziomDiscreteRangedValueComplicationData
, który jest podobny do poziomuRangedValueComplicationData
, z tym że ma zakres i wartość całkowitą.RangedValueComplicationData
Wprowadziliśmy też eksperymentalną funkcjęGoalProgressComplicationData
, która jest podobna do funkcjiRangedValueComplicationData
, ale służy do określania postępów w realizacji celu, w którym wartość minimalna jest domyślnie równa 0, a wartość może być większa niżtargetValue
. Uwaga: we wszystkich wariantachRangedValue
musisz podać co najmniej jeden z elementów monochromeImage, text lub title. (I9590c) - Usunęliśmy
boundsWithMargins
zComplicationSlotState
, ponieważ oprogramowanie systemowe nie ma zastosowania dla tego typu. (I42e26) - Dodaliśmy eksperymentalną obsługę
WeightedElementsComplicationData
, która składa się z tablicy elementów (par wagi i koloru) oraz opcjonalnego tekstu, tytułu lub obrazu. Dane te mogą być wyświetlane jako wykres kołowy, w którym kolory muszą być znaczące w danym kontekście, ponieważ w kompilacji zwykle nie ma miejsca na renderowanie etykiet. (I87eea) - Eksperymentalny element
ColorRamps
używany opcjonalnie przez elementyRangedValueComplicationData
iGoalProgressComplicationData
umożliwia teraz określenie sekwencji do 7 kolorów oraz flagi określającej, czy kolory mają być płynnie przekształcane, czy renderowane w postaci równych kroków koloru. (I9f5bf) - Parametr
RangedValueComplicationData.drawSegmented
został zmieniony navalueType
, który jest liczbą całkowitą z odpowiednim parametremValueType IntDef
, który nadaje znaczenie semantyczne wartości zakresowej i może być używany przez moduł renderowania do wpływania na styl. (I0616b) - Dodaliśmy eksperymentalną obsługę opcjonalnego parametru
ColorRanges
w parametrzeRangedValueComplicationData
. Zwykle widżety są renderowane w kolorach wybranych przez tarczę zegarka, ale czasamiComplicationDataSource
jest najlepszym miejscem do ustawiania kolorów, np. gdy mają one określone znaczenie semantyczne. np. czerwony na niebieski w przypadku temperatury. (I5153a) - Dodaliśmy do
RangedValueComplicationData
eksperymentalnydrawSegmented
. Sygnalizuje to procesorom renderowania, że wskaźnik wartości zakresu ma być narysowany z segmentami, gdzie 1 segment = 1 jednostka. (I7d7c1)
Poprawki błędów
- Dodaliśmy możliwość definiowania
ComplicationSlotBounds
względem wstępnie zdefiniowanego układu współrzędnych ekranu. (I0985d)
Wersja 1.1
Wersja 1.1.1
10 sierpnia 2022 r.
androidx.wear.watchface:watchface-*:1.1.1
został zwolniony. Wersja 1.1.1 zawiera te zatwierdzenia.
- Ta wersja zawiera poprawki błędów. Zdecydowanie zalecamy zaktualizowanie wersji 1.1.0.
Poprawki błędów
Inicjalizacja tarczy zegarka jest asynchroniczna, więc jeśli widżet zostanie odebrany, zanim tarcza będzie gotowa, zostanie umieszczony na liście
pendingInitialComplications
i zastosowany później. NiestetypendingInitialComplications
została zastosowana zbyt wcześnie, co oznacza, że podczas inicjowania tarczy zegarka istniał pewien przedział czasu, w którym komplikacje były nadal umieszczane napendingInitialComplications
i ignorowane. Problem został już rozwiązany. Ta poprawka naprawia błąd polegający na tym, żeComplicationRenderer
nieprawidłowo próbował wczytać elementy zastępcze asynchronicznie, co prowadziło do tego, że grafika kompilacji nigdy się nie aktualizowała. W tej łatce naprawiliśmy błąd, który – mamy nadzieję – występuje tylko teoretycznie, gdy trzeba scalić wielependingInitialComplications
. (0d03ba3)Rozwiązanie potencjalnego utknięcia w blokadzie w funkcji
InteractiveInstanceManager
, w której funkcjagetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
blokowała blokadę dłużej niż to było konieczne. Zwykleengine.setUserStyle
jest szybka, ale jeśli z jakiegoś powodu tak się nie stanie, może dojść do blokady semaforycznej lub zawieszenia aplikacji. Ta poprawka usuwa z blokady zbędne operacje, eliminując tym samym możliwość wystąpienia blokady warunkowej (5a2adca).Rozwiąż kilka problemów, które spowodowały, że
WatchFaceService
nie zostało usunięte. WakeLock może czasami zatrzymaćWatchFaceService
. Dodanie wywołaniarelease()
rozwiąże ten problem. PonadtoStateFlows
może zachowaćWatchFaceService
, co anuluje zmiany wprowadzone przezCoroutineScopes
.(fd48138)Dodaj limity czasu do
awaitDeferredWatchFace
* i naprawwatchfaceOverlayStyle
NullPointerException
. W normalnych okolicznościach nie powinno dojść do przekroczenia limitu czasu, w tym po świeżej instalacji i w sytuacjachDirectBoot
, gdy obciążenie procesora jest wysokie. Naprawiliśmy też błąd NPE, który występował, gdy funkcjagetWatchfaceOverlayStyle
była wywoływana po funkcjiclose()
(a4c3a5a).
Wersja 1.1.0
15 czerwca 2022 r.
androidx.wear.watchface:watchface-*:1.1.0
został zwolniony. Wersja 1.1.0 zawiera te zatwierdzenia.
Ważne zmiany od wersji 1.0.0
Ulepszona funkcja edycji:
- Dodaliśmy obsługę schematów hierarchicznych, która umożliwia tworzenie hierarchii stylów w interfejsie edytora. Możesz teraz określić oddzielne ikony do wykorzystania na tarczy zegarka i w edytorach towarzyszących.
- Istnieje opcja obsługi wielu instancji tarczy zegarka. Każda instancja ma unikalny identyfikator dostępny we wszystkich interfejsach API.
- Możesz teraz określać zrozumiałe dla człowieka nazwy
ComplicationSlots
na potrzeby korzystania z edytorów. - Eksperymentalna obsługa stylów „flavors”, czyli wyselekcjonowanej kolekcji stylów, która będzie widoczna w edytorze towarzyszącym.
- Podczas edycji 2 egzemplarzy tarczy zegarka można teraz udostępniać zasoby, co pozwala oszczędzać pamięć.
- Podczas wybierania widżetu w edytorze tarczy zegarka bieżący dostawca jest teraz wstępnie wybrany.
Ulepszone widżety:
- Teraz możesz określić
ComplicationType
dla podstawowych i dodatkowych źródeł danych, co daje deweloperom większą elastyczność w przypadku gotowych rozwiązań. - Dodaliśmy
ComplicationDataTimeline
, który zapewnia sekwencję danych ograniczonych czasowo do przekazania na tarczę zegarka. Dane te mogą być przechowywane w pamięci podręcznej i automatycznie aktualizowane. Może to być na przykład prognoza pogody na dziś w różnych porach dnia lub wiele nadchodzących wydarzeń w kalendarzu. ComponentName
dostawcy widżetu jest częściąComplicationData
.- Widżety są teraz przechowywane w pamięci podręcznej, co zapewnia większą wygodę podczas przełączania się między tarczami zegarka.
Inne zmiany:
- Właściwości
UserStyleSchema
iComplicationSlots
można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarczy zegarka i umożliwia szybsze wysyłanie zapytań o metadane do systemu. - Tarcze zegarka mogą teraz wpływać na kolory używane do renderowania nakładki systemowej.
Wersja 1.1.0-rc01
18 maja 2022 r.
androidx.wear.watchface:watchface-*:1.1.0-rc01
został zwolniony. Wersja 1.1.0-rc01 zawiera te zatwierdzenia.
Nowe funkcje
- Wprowadziliśmy kilka ulepszeń obsługi kodu XML tarczy zegarka, które ułatwiają określanie
ComplicationSlotBounds
i odwołania. Eksperymentowanie z komplikacją krawędziBoundingArc
trwa nadal, a komplikacja jest dostępna w wersjidrawHighlight
, ale nie zalecamy jej używania w tej chwili.
Zmiany w interfejsie API
- Dodaliśmy eksperymentalne przeciążenie funkcji
drawHighlight
, która przyjmuje parametrBoundingArc
. (I705f8) - Pliki XML tarczy zegarka obsługują teraz odwołania do zasobów. Umożliwia to używanie tych samych stałych wartości zarówno w pliku XML, jak i w kodzie. (I3ef61)
- Dodaliśmy możliwość definiowania
ComplicationSlotBounds
w formiecenter_x
,center_y
,size_x
isize_y
. Teraz można też używać różnych jednostek (np. dp) za pomocą odwołań do zasobów. (Iace98)
Poprawki błędów
- Naprawiono błąd
runBlockingWithTracing
, który powodował uruchamianie zadań w niewłaściwym kontekście (4f595fe). - Ustaw
BaseEditorSession.close
jako synchroniczny. Problem z asyncjonalnymBaseEditorSession.close
polega na tym, żeComplicationDataSourceInfoRetriever
jest zwalniany zbyt późno, co powoduje spamowanie ostrzeżeń w logcat. Prawdopodobnie był to nieszkodliwy spam, ale spam z logcat jest uciążliwy i należy go unikać.(35a5308)
Wersja 1.1.0-beta02
11 maja 2022 roku
androidx.wear.watchface:watchface-*:1.1.0-beta02
został zwolniony. Wersja 1.1.0-beta02 zawiera te commity.
Nowe funkcje
- Dodaliśmy eksperymentalne wsparcie dla nowych typów
ComplicationData
. Nie są one jeszcze gotowe do użycia, ale warto śledzić tę kwestię.
Zmiany w interfejsie API
- Dodaliśmy klasę eksperymentalną
BoundingArc
, która opisuje geometrię pola widżetu na krawędzi. Został on dodany doComplicationSlot
i przekierowany doComplicationSlotState
orazWatchFaceMetadataClient
. (I61a40) - Dodaliśmy możliwość dziedziczenia ustawień w pliku XML
UserStyleSetting
. Pozwala to ograniczyć ilość informacji i udostępniać ustawienia między tarczami zegarka. (Ief841) - Dodaliśmy 2 nowe eksperymentalne typy
ComplicationData
:ListComplicationData
iProtoLayoutComplicationData
. Obecnie nie ma obsługi renderowania dla żadnego z tych typów, a WearOS nie rozpoznaje ich, jeśli są dodane do pliku manifestuComplicationDataSource's
. (I1811c)
Poprawki błędów
- Napraw serializację typu
TimeLineEntry
. Nie serializowaliśmy typuTimeLineEntry
, co oznacza, że buforowaneTimeLineEntries
typu NoData było błędnie interpretowane jako mające typ elementu rodzica, co prowadziło do nieprawidłowych wyników testów NPEs, gdy dostęp był uzyskiwany do nieistniejących wymaganych pól. (55ffdf5) - Usunęliśmy błąd, który powodował, że
setComplicationData
usuwało pola osi czasu(fb392f5). - Naprawiono błąd, który w niektórych przypadkach powodował NPE(12ca62e).
runBlockingWithTracing
- Naprawiono błąd, który powodował, że czasami
ClassNotFoundException: android.support.wearable.complications.ComplicationText
podczas otrzymywania komplikacji (217942d9). - Usunięto błąd w funkcji
GlesRenderer.backgroundThreadInitInternal
, która wywoływała funkcjęonBackgroundThreadGlContextCreated
tylko wtedy, gdy została wywołana funkcjaEGL14.eglCreateContext
. Usunięto błąd powodujący błąd wizualny na zrzucie ekranu spowodowany przezverticalFlip
(c674ad2). - Naprawiono sprawdzanie wersji pliku XML
WatchFaceService
, który był wczytywany z niewłaściwego pakietu (dfa06f3). - Format szablonu szkiców korzysta teraz z pakietu wewnętrznego. Nie chcemy, aby elementy zastępcze powodowały błędy w dotychczasowych tarczach zegarka, które mogą używać ukrytej wewnętrznej funkcji ComplicationData. Wcześniej format danych
NoDataComplication
przechowywał w zwykłych polach zastępnik (co było problematyczne, ponieważ stare tarcze zegarków renderowały niepotrzebnie ciąg znaków zastępnika). Teraz używamy pakietu wewnętrznego, aby całkowicie to wyodrębnić (d5e7bd2).
Wersja 1.1.0-beta01
20 kwietnia 2022 r.
androidx.wear.watchface:watchface-*:1.1.0-beta01
został zwolniony. Wersja 1.1.0-beta01 zawiera te commity.
Zmiany w interfejsie API
- Teraz metody
WatchFaceMetadataClient
(getUserStyleSchema
,getComplicationSlotMetadataMap
,getUserStyleFlavors
) iHeadlessWatchFaceClient.getUserStyleFlavors
rzucają unchecked RuntimeException zamiastWatchFaceException
. (I0718a) WatchFaceMetadataClient.WatchFaceException
zostało przeniesione poza zajęcia, aby można było go ponownie użyć. (I4e869)
Poprawki błędów
WatchFaceMetadataClient
nie będzie się już zawieszać, gdy zostanie wysłany częściowoComplicationSlotBounds
.(Iaafd)
Wersja 1.1.0-alpha05
6 kwietnia 2022 roku
androidx.wear.watchface:watchface-*:1.1.0-alpha05
został zwolniony. Wersja 1.1.0-alpha05 zawiera te commity.
Nowe funkcje
- Możesz teraz sprawdzić, które źródło danych wysłało
ComplicationData
, sprawdzającComplicationData.dataSource
. Niektóre tarcze zegarka mogą używać tego do dostosowywania wyświetlania widżetów. (I44a73)
Zmiany w interfejsie API
- Atrybuty
Renderer.CanvasRenderer
iRenderer.GlesRenderer
zostały wycofane na rzecz atrybutówRenderer.CanvasRenderer2
iRenderer.GlesRenderer2
, które obsługują atrybutySharedAssets
przekazywane do metod renderowania. W przypadku interoperacyjności Javy wprowadziliśmyListenableCanvasRenderer2
iListenableGlesRenderer2
. (I31ffa) - Dodano możliwość definiowania
@WatchFaceFlavorsExperimental
motywów – wstępnie skonfigurowana lista stylizowanych tarcz zegarka (I04dd0) Renderer.sharedAssets
jest teraz stanem przepływu, a nieużywaneRenderer.SharedAssetsFactory
zostało usunięte (I12ac5).- Środowisko wykonawcze
UserStyleSchema.userStyleSettings
nie jest już wycofane (Iba7e3) - Dodaliśmy
HeadlessWatchFaceClient.getUserStyleSchemaDigestHash
, co pozwalaHeadlessWatchFaceClient
uniknąć stosunkowo niewielkiego obciążenia związanego z przekazywaniem schematu przez AIDL przed obliczeniem hasha digest. (I33597) - Dodaliśmy
isUserStyleSchemaStatic
doWatchFaceMetadataClient
, co jest prawdziwe tylko wtedy, gdy można mieć pewność, żeUserStyleSchema
nie ulegnie zmianie, chyba że zaktualizowany zostanie pakiet APK tarczy zegarka. (I45a3f) - Do
UserStyleSchema
dodaliśmy funkcjęgetDigestHash
, która oblicza skrót skrótu schematu. Dzięki temu możesz szybko sprawdzić, czy wartośćUserStyleSchema
się zmieniła. (I2063d) METADATA_KEY_DATA_SOURCE_DEFAULT_CONFIGURATION_SUPPORTED
zmienił nazwę naMETADATA_KEY_DATA_SOURCE_DEFAULT_CONFIG_SUPPORTED
(I9ba5d)- Nazwa
UserStyleSetting.OnWatchEditorData
została zmieniona naUserStyleSetting.WatchFaceEditorData
. Zawiera ona dane używane wyłącznie przez edytor tarczy zegarka. (If3afb)
Wersja 1.1.0-alpha04
9 marca 2022 r.
androidx.wear.watchface:watchface-*:1.1.0-alpha04
został zwolniony. Wersja 1.1.0-alpha04 zawiera te commity.
Zmiany w interfejsie API
- Aktualne dane
ComplicationData
nie zawsze są dostępne (np. wygasłe dane ComplicationData w pamięci podręcznej), dlatego rozszerzyliśmyNoDataComplication
o opcjonalne dane zastępcze ComplicationData i dodaliśmyComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
,PhotoImage.PLACEHOLDER
, które można używać tylko w kontekście danych zastępczychNoDataComplicationData
. Jeśli są zaznaczone, te elementy zastępcze są renderowane za pomocą szarych prostokątów lub łuków. (I6285d) - Dodaliśmy
ComplicationData.getNextChangeInstant
, który informuje o następnym momencie po momencie odniesienia, w którym może się zmienić dowolne pole komplikacji. Jest on używany wewnętrznie do planowania ramek na potrzeby aktualizacji widżetów. Jeśli na przykład tarcza zegarka zwykle aktualizuje się raz na minutę, ustawienie komplikacji stopera spowoduje, że będzie aktualizowana raz na sekundę. (I7ceb2) EditorSession.watchFaceId
może być teraz używany na wszystkich poziomach interfejsu API. Dodatkowo jego wartość będzie zawsze zgodna z wartościąWatchState.watchFaceInstanceId
. (I323b9)- Interfejs API
getPendingIntentForTouchEvent
nie jest już potrzebny, ponieważ podstawowy problem został rozwiązany w ramach, więc wszystkie powiązane interfejsy API zostały usunięte. AbyPendingIntents
została uruchomiona, nie musisz nic robić na tarczy zegarka, nawet jeśli przycisk Home został niedawno naciśnięty. (I1f2e8) - Dodaliśmy parametr
RendererParameters.isForScreenShot
, który będzie miał wartość true, jeśli renderowanie dotyczy zrzutu ekranu. Niektóre tarcze z animowanymi elementami muszą znać tę wartość, aby można było wprowadzić odpowiednie korekty i osiągnąć najlepsze wyniki. (I96d99) - Dodaliśmy
WatchFaceExceptionReason
doWatchFaceException
, aby wskazać, co poszło nie tak. (I01d15) - Wartość
ComplicationDataSourceService.onImmediateComplicationRequest
została usunięta, a zamiast niej dodano wartośćComplicationRequest.immediateResponseRequired
, aby wskazać, że dostawca musi szybko odpowiadać (najlepiej w czasie poniżej 100 ms). Pamiętaj, że ta funkcja jest chroniona przez uprawnienie o wysokim prioryteciecom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
. (Ie6b23) - Zaktualizowano opcjonalność w jądrze i w bibliotece zgodności aplikacji, aby dopasować ją do wersji DP2 Tiramisu (I0cbb7).
Poprawki błędów
- Teraz aplikacja tarczy zegarka ulega awarii z wyjątkiem, jeśli weryfikacja schematu zakończy się niepowodzeniem (Ia400f)
Wersja 1.1.0-alpha03
9 lutego 2022 r.
androidx.wear.watchface:watchface-*:1.1.0-alpha03
został zwolniony. Wersja 1.1.0-alpha03 zawiera te commity.
Zmiany w interfejsie API
- Dodaliśmy eksperymentalną obsługę hierarchicznych schematów stylów. Do
androidx.wear.watchface.style.UserStyleSetting.Option
dodaliśmy nową właściwość childSettings, która jest początkowo używana tylko przezListOption
. Umożliwia to opisanie hierarchii stylów na potrzeby interfejsów użytkownika edytora. Użyty jako podstawa styl użytkownika pozostaje niezmieniony i nadal jestMap<String, ByteArray>
. (Iaf6f4) - Dodaliśmy
WatchFace.OverlayStyle
, który umożliwia tarczy zegarka konfigurowanie renderowania nakładki stanu systemu. (I8520d) - Wprowadziliśmy
clearWithBackgroundTintBeforeRenderingHighlightLayer
nowy opcjonalny parametr konstruktora dlaCanvasRenderer
(domyślnie false), jeśli ustawisz go na true, płótno zostanie wyczyszczone za pomocą koloru odcienia tła. (Ie01e5) - Dodano klucz metadanych
androidx.watchface.complications.datasource.DEFAULT_CONFIGURATION_SUPPORTED
, który pozwala źródłom danych widżetów wskazywać, że mogą one podawać wartość domyślną bez żadnej konfiguracji (Icc0d4). - Podczas edytowania tarczy zegarka często występuje zarówno instancja interaktywna, jak i bezgłowa. Aby oszczędzać pamięć, wprowadziliśmy
Renderer.SharedAssets
, który pozwala renderującemu tarczę zegara udostępniać niezmienne dane (np. tekstury i shadery) między instancjami. ParametryGlesRenderer.setEglConfig
iGlesRenderer.setEglDisplay
są przestarzałe. Nigdy nie było planowane, aby można je było ustawiać, ponieważ prowadziłoby to do nieokreślonego zachowania. (I0d9e7) - Dodaliśmy do klasy
ComplicationSlot.Builder
metodysetNameResourceId
isetScreenReaderNameResourceId
(które odwołują się do zasobów ciągu tekstowego) oraz odpowiadające im metody gettera w klasieandroidx.wear.watchface.client.ComplicationSlotState
. Dzięki temu system może pobierać nazwy ComplicationSlots do wykorzystania w edytorach i czytnikach ekranu. (If6c6a) - Funkcje
WatchfaceMetadataClient.getUserStyleSchema
igetComplicationSlotMetadataMap
zwracają teraz wartośćWatchFaceException
zamiastRemoteException
. (I86f11) - Funkcja
onSynchronousComplicationRequest
i powiązane z nią funkcje w funkcjiComplicationDataSourceService
zostały przemianowane naonImmediateComplicationRequest
itd. (I87ba0) - Edytory tarcz zegarka mają znacznie mniej miejsca na ekranie niż edytory aplikacji towarzyszącej, dlatego warto obsługiwać różne ikony dla edytorów tarcz zegarka. Ta poprawka dodaje
OnWatchEditorData
(obecnie zawiera tylko ikonę) do wszystkich UserStyleSettings i w stosownych przypadkach do klas opcji. (If1886) - Do konstruktora klasy ListenableGlesRenderer dodaliśmy parametr
@JvmOverloads
, aby ulepszyć współpracę z językiem Java. (I2974a)
Poprawki błędów
- Konstruktor klasy
ListenableGlesRenderer
jest teraz prawidłowo oznaczony jako@Throws(GlesException::class)
, co umożliwia rozszerzanie tej klasy w języku Java. (Iac6d0) - Naprawiono błąd polegający na tym, że element
PhotoImageComplicationData
tapAction nie był prawidłowo obsługiwany (I1cc30).
Wersja 1.1.0-alpha02
12 stycznia 2022 r.
androidx.wear.watchface:watchface-*:1.1.0-alpha02
został zwolniony. Wersja 1.1.0-alpha02 zawiera te commity.
Nowe funkcje
- Aby ułatwić debugowanie i testowanie, klasy
ComplicationData
i powiązane podklasy mają teraz zastąpione metody hashcode, equals i toString, co ułatwia z nimi pracę.
Zmiany w interfejsie API
- Metody
WatchfaceMetadataClient
ponownie rzucająRemoteExceptions
w odpowiednich miejscach, co ułatwia kodowi klienta wychwytywanie błędów z tarczy zegarka. (I78785) - Klasy
ComplicationData
i jej podklasy mają teraz metody hashcode, equals i toString. (I24bc6)
Wersja 1.1.0-alpha01
15 grudnia 2021 roku
androidx.wear.watchface:watchface-*:1.1.0-alpha01
został zwolniony. Wersja 1.1.0-alpha01 zawiera te commity.
Nowe funkcje
Właściwości
UserStyleSchema
iComplicationSlots
można teraz zdefiniować w pliku XML. To upraszcza tworzenie tarcz zegarka. Poza tym zapytaniaWatchFaceMetadataClient
są szybsze, ponieważ nie trzeba łączyć się z usługą, aby pobrać metadane. Interfejsy APIWatchFaceMetadataClient
iListenableWatchFaceMetadataClient
nie są już eksperymentalne i staną się częścią stabilnego interfejsu API. System będzie mógł opcjonalnie obsługiwać wiele instancji tarczy zegarka, z różnymi opcjami stylizacji zdefiniowanymi przez użytkownika. Będą one widoczne w selektorze tarczy zegarka. Aby włączyć tę funkcję, tarcza zegarka musi zawierać w pliku manifestu ten tag metadanych.<meta-data android:name="androidx.wear.watchface.MULTIPLE_INSTANCES_ALLOWED" android:value="true" />
Niektóre tarcze zegarka mają stan, który nie jest rejestrowany w
UserStyle
. Aby umożliwić obsługę tego stanu i wielu instancji, identyfikator instancji tarczy zegarka jest teraz dostępny za pomocąWatchState.watchFaceInstanceId
.ComplicationData
jest teraz przechowywany w pamięci podręcznej, aby umożliwić wyświetlanie komplikacji natychmiast po załadowaniu. Czasami system zapisujeComplicationData
w pamięci podręcznej, a czasami biblioteki tarcz zegarka serializują go. Po zserializowaniu wszystkie powiązane wartości tapAction zostaną utracone.W takim przypadku zwrócona zostanie wartośćComplicationData.tapActionLostDueToSerialization
, a tarcza zegarka powinna renderować komplikację w inny sposób (np. w szarej lub półprzezroczysty), aby sygnalizować, że nie można jej dotknąć.true
System wyśle zaktualizowaneComplicationData
ztapAction
najszybciej jak to możliwe.Niektóre
ComplicationData
nie powinny być przechowywane w pamięci podręcznej przez długi czas. Aby to umożliwić, dodaliśmy bardziej ogólną funkcjęComplicationDataTimeline
. Możesz użyć tej funkcji, aby przesłać sekwencjęComplicationData
z ograniczeniem czasowym na tarczę zegarka. Możesz ją zapisać w pamięci podręcznej i automatycznie aktualizować. Może to być na przykład prognoza pogody na dziś w różnych porach dnia lub wiele nadchodzących wydarzeń w kalendarzu. InterfejsComplicationRequestListener
został rozszerzony o nową metodęonComplicationDataTimeline
, która umożliwia zwracanie tych danych.DefaultComplicationDataSourcePolicy
została rozszerzona, aby umożliwić określenieComplicationType
dla podstawowego i dodatkowego źródła danych.Dodaliśmy obsługę dostawców widżetów synchronicznych, w których przypadku widżet jest aktualizowany częściej niż zwykle, nawet do 1 raza na sekundę, gdy tarcza jest widoczna i nie jest w trybie otoczenia. Uwaga: dostawcy elementów synchronicznych mogą mieć ograniczone możliwości ze względu na obciążenie pamięci.
Zmiany
PendingIntentTapListener
zostaną prawdopodobnie cofnięte, ponieważ rozwiązaliśmy podstawowy problem (nie można uruchomić tarczy zegarka przez 5 sekund po naciśnięciu przycisku głównego).
Zmiany w interfejsie API
- Wartość
ComplicationData.isCached
została zmieniona natapActionLostDueToSerialization
, która jest bardziej przydatna przy określaniu, czy miejsce na widżet powinno być renderowane inaczej, aby sygnalizować, że nie można go kliknąć. (I6de2f) - Dodano
ComplicationDataTimeline
dowear-complication-data-source
. Możesz użyć tej funkcji, aby przesłać sekwencjęComplicationData
z ograniczeniem czasowym na tarczę zegarka. Możesz ją zapisać w pamięci podręcznej i automatycznie aktualizować. Może to być na przykład prognoza pogody na dziś w różnych porach dnia lub wiele nadchodzących wydarzeń w kalendarzu. InterfejsComplicationRequestListener
został rozszerzony o nową metodęonComplicationDataTimeline
, która umożliwia zwracanie tych danych. Do zawieszania usług źródeł danych służy nowy moduł KotlinaSuspendingTimelineComplicationDataSourceService
. (Idecdc) - Dodano użytkowników
PendingIntentTapListener
iWatchFaceControlClient.getPendingIntentForTouchEvent
. Może to pomóc tarczom zegarka, które muszą uruchamiać intencje w odpowiedzi na kliknięcia, w ominięciu problemu, w którym framework blokuje uruchamianie nowych działań przez 5 sekund po naciśnięciu przycisku głównego. (I98074) - Wprowadziliśmy pamięć podręczną
ComplicationData
dla każdej tarczy zegarka. Ma to na celu umożliwienie tarczy wyświetlania ostatnich znanych wartości danych po załadowaniu, dopóki system nie zaktualizuje ich. Dostępna jest nowa metoda interfejsu APIWatchFaceControlClient.hasComplicationCache
przeznaczona dla producentów OEM. Może to wpływać na strategię systemu dotyczącą wysyłania widżetów na tarczę zegarka. DodatkowoComplicationData
ma właściwośćisCached
i zalecamy, aby elementy składowe z poziomu pamięci podręcznej były renderowane inaczej, ponieważtapAction
nie może być przechowywane w pamięci podręcznej i będzienull
w takim elemencie. (I404b0) - Identyfikator instancji tarczy zegara jest teraz dostępny w sekcji
WatchState.watchFaceInstanceId
. W przypadku większości tarcz zegarków nie jest to konieczne, ale jeśli tarcza ma stan, który nie jest zapisany w schemacie, to właśnie ten klucz służy do identyfikacji instancji tarczy. Aby to umożliwić, możesz teraz podać identyfikator, gdy dzwonisz doWatchFaceControlClient.createHeadlessWatchFaceClient
. (I1ff98) - Rozszerzone
DefaultComplicationDataSourcePolicy
z możliwością ustawienia domyślnegoComplicationTypes
dla dostawcy podstawowego, dodatkowego i awaryjnego dostawcy systemu. WłaściwośćComplicationSlot.defaultDataSourceType
została wycofana. (If0ce3) - Wartość
ComplicationSlot.configExtras
może teraz ulec zmianie i może być aktualizowana przed wywołaniem funkcjiEditorSession.openComplicationDataSourceChooser()
. (I6f852) - Dodano użytkowników
WatchFace.setComplicationDeniedDialogIntent
isetComplicationRationaleDialogIntent
. Te intencje są uruchamiane, aby wyświetlić okno z uzasadnieniem przed poproszeniem o uprawnienia dotyczące widżetów oraz kolejne okno wyjaśniające, że potrzebne jest uprawnienie do korzystania z widżetów, gdy użytkownik próbuje je edytować, a uprawnienia zostały odrzucone (okno wyboru dostawcy nie otworzy się, więc potrzebne jest okno z prośbą o uprawnienia). (I3a29c) - Właściwości
UserStyleSchema
iComplicationSlots
można teraz zdefiniować w pliku XML. Upraszcza to tworzenie tarczy zegarka i przyspiesza zapytaniaWatchFaceMetadataClient
, ponieważ nie trzeba już łączyć się z usługą, aby pobrać metadane. (I85bfa) - Dodano
InteractiveWatchFaceClient.supportsPendingIntentForTouchEvent
, aby klient mógł sprawdzić, czy tarcza zegarka obsługujegetPendingIntentForTouchEvent
. (I0b917) - Usługi
WatchFaceMetadataClient
iListenableWatchFaceMetadataClient
nie są już eksperymentalne. Można ich używać do efektywnego uzyskiwania metadanych tarczy zegarka, w miarę możliwości bez otwierania wiązadła tarczy. (Ibb827) - Dodaliśmy obsługę dostawców widżetów synchronicznych, w których przypadku widżet jest aktualizowany częściej niż zwykle, nawet do 1 raza na sekundę, gdy tarcza zegarka jest widoczna i nie jest w trybie otoczenia. Aby korzystać z tej funkcji, dostawca musi dodać nowy tag metadanych
androidx.wear.watchface.complications.data.source.SYNCHRONOUS_UPDATE_PERIOD_SECONDS
w pliku manifestu i zastąpić tagonSynchronousComplicationRequest
. W zależności od charakteru źródła danych może być konieczne zastąpienie wartościonStartSynchronousComplicationRequests
ionStopInteractiveComplicationRequests
, aby otrzymywać powiadomienia o tym, kiedy widżet wchodzi w tryb interaktywny i z niego wychodzi. (I8fe9d)
Wersja 1.0
Wersja 1.0.1
9 lutego 2022 r.
androidx.wear.watchface:watchface-*:1.0.1
został zwolniony. Wersja 1.0.1 zawiera te zatwierdzenia.
Poprawki błędów
- Naprawiono błąd polegający na tym, że element
PhotoImageComplicationData
tapAction nie był prawidłowo obsługiwany (I1cc30).
Wersja 1.0.0
1 grudnia 2021 r.
androidx.wear.watchface:watchface-*:1.0.0
został zwolniony. Wersja 1.0.0 zawiera te zatwierdzenia.
Najważniejsze funkcje wersji 1.0.0
Pakiet androidx.wear.watchface
to nowa zalecana biblioteka do tworzenia tarcz zegarka na Wear OS. Zawiera ona kilka nowych funkcji w porównaniu ze starą biblioteką pomocy dotyczącą urządzeń noszonych.
- Biblioteka obsługuje bezpośrednio stylizację użytkownika (np.zmianę palety kolorów, stylu wskazówek zegarka, wyglądu oznaczeń godzin itp. – patrz
androidx.wear.watchface.style
). Dzięki pakietowi androidx.wear.watchface.editor możesz teraz łatwiej tworzyć edytor tarczy zegarka, a tarczę zegarka można edytować z aplikacji towarzyszącej systemu bez konieczności pisania dodatkowego kodu. - Sprawdzone metody są wbudowane. Biblioteka automatycznie wygenerowała etykiety treści dla czytników ekranu na potrzeby widżetów (możesz też dodać własne), a częstotliwość wyświetlania klatek automatycznie spada, gdy poziom naładowania baterii jest niski i nie ładuje się ona, aby wydłużyć czas pracy na baterii.
- Do tworzenia tarczy zegarka potrzeba mniej kodu, zwłaszcza w przypadku widżetów, w których przypadku wiele standardowych elementów zostało przeniesionych do biblioteki.
Poprawki błędów
- Rozwiązanie
EditorSession.userStyle.compareAndSet
(I6f676) - Naprawiono problem z bardzo krótkimi opóźnieniami tarczy zegarka (Iffb97).
- Przesyłanie
InteractiveWatchFaceImpl.onDestroy
w wątku interfejsu użytkownika (I83340) - Rozwiązanie kilku problemów z odbiornikami transmisji (I7d25f)
Wersja 1.0.0-rc01
3 listopada 2021 r.
androidx.wear.watchface:watchface-*:1.0.0-rc01
został zwolniony. Wersja 1.0.0-rc01 zawiera te zatwierdzenia.
Poprawki błędów
Naprawiono funkcję dump() (wywoływaną przez adb shell dumpsys), która została uszkodzona przez migrację przepływu. (087cf9e)
Zapewnienie prawidłowej kolejności zapisywania danych writeDirectBootPrefs. Chcemy, aby funkcja writeDirectBootPrefs zawsze była wykonywana po initStyleAndComplications, ponieważ opóźnienie inicjalizacji wątku interfejsu użytkownika może spowodować opóźnienie.(37650ac)
Upewnij się, że wywołano metodę Renderer.onDestroy. W przypadku, gdy mechanizm renderowania został utworzony, ale nie udało się uruchomić WF, a wywołano metodę Engine.onDestroy, musimy wywołać metodę Renderer.onDestroy. (f9952dc)
Optymalizacja/poprawka do isBatteryLowAndNotCharging. Ta poprawka przesuwa początkową konfigurację funkcji isBatteryLowAndNotCharging do wcześniejszego momentu, co oznacza, że można ją wykonać równolegle z metodą createWatchFace. Dodatkowo teraz nasłuchujemy zdarzenie ACTION_POWER_DISCONNECTED. (ddffd80
InteractiveWatchFaceClientImpl.isConnectionAlive ma być fałszem po zamknięciu (ab9774e)
Wersja 1.0.0-beta01
27 października 2021 roku
androidx.wear.watchface:watchface-*:1.0.0-beta01
został zwolniony. Wersja 1.0.0-beta01 zawiera te commity.
Wersja 1.0.0-alpha24
13 października 2021 r.
androidx.wear.watchface:watchface-*:1.0.0-alpha24
został zwolniony. Wersja 1.0.0-alpha24 zawiera te zatwierdzenia.
Zmiany w interfejsie API
- Zajęcia w pakiecie
androidx.wear.watchface.complications
zostały przeniesione do nowego projektuwear:watchface:watchface-complications
. Oznacza to, że nie możesz uwzględnić tej biblioteki ani żadnej poprzedniej wersji alfawear:watchface:watchface-complications-data
, ponieważ pojawią się błędy dotyczące duplikatów zajęć. (I97195) - Metoda Renderer.dump została przemianowana na Renderer.onDump i oznaczona adnotacją @UiThread. (I44845)
- Nazwa
InteractiveWatchFaceClient.addWatchFaceReadyListener
została zmieniona naaddOnWatchFaceReadyListener
, a nazwaremoveWatchFaceReadyListener
naremoveOnWatchFaceReadyListener
. (I48fea) - Zmienne EditorSession
getComplicationsPreviewData
igetComplicationsDataSourceInfo
nie są już funkcjami zawieszania, lecz właściwościamiStateFlow<>
, których wartość jest początkowo pusta. Z klasy podstawowej ListenableEditorSession usunięto obiektygetListenableComplicationPreviewData
igetListenableComplicationsProviderInfo
, a w ich miejsce dodano nowe obiektyStateFlow<>
. Jeśli chcesz odsłuchać zmiany w kodzie Java, możesz użyć narzędziaandroidx.lifecycle.FlowLiveDataConversions.asLiveData
do konwersji naLiveData<>
. (Ic5483)
Wersja 1.0.0-alpha23
29 września 2021 r.
androidx.wear.watchface:watchface-*:1.0.0-alpha23
został zwolniony. Wersja 1.0.0-alpha23 zawiera te commity.
Nowe funkcje
Biblioteka tarcz zegarka jest teraz jedną grupą bibliotek, dlatego biblioteki zostały przeniesione. Musisz zaktualizować importy Gradle w ten sposób:
Stary | Nowość |
---|---|
androidx.wear:wear-complications-data |
androidx.wear.watchface:watchface-complications-data |
androidx.wear:wear-complications-data-source |
androidx.wear.watchface:watchface-complications-data-source |
androidx.wear:wear-watchface |
androidx.wear.watchface:watchface |
androidx.wear:wear-watchface-complications-rendering |
androidx.wear.watchface:watchface-complications-rendering |
androidx.wear:wear-watchface-client |
androidx.wear.watchface:watchface-client |
androidx.wear:wear-watchface-client-guava |
androidx.wear.watchface:watchface-client-guava |
androidx.wear:wear-watchface-data |
androidx.wear.watchface:watchface-data |
androidx.wear:wear-watchface-editor |
androidx.wear.watchface:watchface-editor |
androidx.wear:wear-watchface-editor-guava |
androidx.wear.watchface:watchface-editor-guava |
androidx.wear:wear-watchface-guava |
androidx.wear.watchface:watchface-guava |
androidx.wear:wear-watchface-style |
androidx.wear.watchface:watchface-style |
Zmiany w interfejsie API
- Przekaż osobne biblioteki
androidx.wear
tarcz zegarka i komplikacji do grupy bibliotekandroidx.wear.watchface
. (b25f3c0) - Dodano EditorRequest.canWatchFaceSupportHeadlessEditing, aby poinformować klienta, czy edytor tarczy zegarka obsługuje edycję bez interfejsu. Pamiętaj, że w tym przypadku mogą wystąpić fałszywie negatywne wyniki, ponieważ obsługa została dodana w ramach asop/1756809. W przyszłości funkcja zwróci jednak prawidłową wartość dla wszystkich przyszłych tarcz zegarka. (ca55590)
- Renderer ma teraz metodę dump(), która może zostać zastąpiona, aby dodać niestandardowe dane do informacji wygenerowanych przez ABD shell dumpsys activity service WatchFaceService. (95235f9)
- Metoda InteractiveWatchFaceClient.addWatchFaceReadyListener teraz najpierw określa wykonawcę. (563ac2f)
- Metoda StateFlowCompatHelper została usunięta. Zamiast niej należy używać asLiveData (androidx.lifecycle.asLiveData). (bd35d3)
- Wartość CurrentUserStyleRepository.userStyle nie jest już zmienna. (I44889)
- Interfejs WatchFaceReadyListener został przemianowany na OnWatchFaceReadyListener. (Ic12a9)
Poprawki błędów
- InteractiveInstanceManager.deleteInstance do wywołania onDestroy. Jest to konieczne, aby zapewnić usunięcie InteractiveWatchFaceImpl przez garbage collectora.(fce4af8, b/199485839)