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. – także wszystkie nowe tarcze zegarka publikowane 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 |
---|---|---|---|---|
18 września 2024 r. | 1.2.1 | - | - | 1.3.0-alpha04 |
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. Jeśli zauważysz 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. Możesz dodać swój głos do istniejącego problemu, klikając przycisk z gwiazdką.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.3
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ę aktualizowania zrzutu ekranu, gdy zmienia się konfiguracja systemu (np. lokalizacja), za pomocą nowego przycisku
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 podczas korzystania z AGP 8.1 lub nowszej (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 do porównywania wartości best i
selectedData
używamy równości referencyjnej, ponieważ operator równości jest kosztowny. (446b00)
Zmiany w interfejsie API
- Dodaliśmy interfejs API dynamiczny bez opcji zastępowania dla usługi
GoalProgressComplicationData
. (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 zatwierdzenia.
Nowe funkcje
- Obiekty
WatchFaceServices
można inicjować równolegle, dlatego powinny być bezstanowe. Aby to umożliwić, dodaliśmy obiektStatefulWatchFaceService
, w którym dodatkowe dane zdefiniowane przez użytkownika i utworzone przezcreateExtra()
są przekazywane do wszystkich zastąpień wywoływanych podczas inicjalizacji. - Funkcja
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 i utworzona 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ę kontroluje, co się dzieje, gdy system jest przywracany z kopii zapasowej dla źródła danych widżetu zMETADATA_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 do funkcjiRangedValueComplicationData
, ale służy do obliczania postępu w realizacji celu, w którym wartość minimalna jest domyślnie równa 0, 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, 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 określone 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
SuspendingComplicationDataSourceService#onDestroy
jest teraz otwarta. 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 owijacze 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 danych dla dziennego dystansu, dziennych kalorii i dziennych pięter. 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) - Formy płatności
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 usługi (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łówInteractiveWatchFaceClient
,HeadlessWatchFaceClient
iEditorSession
. Zwykle jest 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) - Executor został dodany do metod
DynamicTypeEvaluator.bind
. (I346ab) - Do metody
BoundDynamicType
dodaliśmy metodęstartEvaluation
, aby wywołać ocenę po przypisaniu 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ż ustawienia są wysyłane przez Bluetooth podczas edycji, 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 rzucanych 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 starszych tarcz zegarka. (I24c89) - Zdecydowaliś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ń z platformą komplikacji, ale ta funkcja nie jest jeszcze gotowa do użycia. Bądź na bieżąco.
- 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 tarcz 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 funkcji dla czytnika 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 wciągnięte do obiektu towarzyszącegoRangedValueComplicationData
i przemianowane naTYPE_UNDEFINED
iTYPE_RATING
. Dodano też 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
w przypadku właściwościRangedValueComplicationData
. - W Androidzie T dodaliśmy do
ComplicationData
wartościComplicationPersistencePolicy
isetCachePolicy
, które umożliwiają dostawcy określenie, czy komplikacja ma być trwała (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
, oznaczając je adnotacją@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 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 komisy.
Nowe funkcje
- Nie ma nowych funkcji, ale naprawiliśmy kilka błędów w edytorze tarczy zegarka.
Zmiany w interfejsie API
- Wycofane środowisko wykonawcze
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 zamknie się, 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 zaktualizowanie obrazu 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 obejmujeDisconnectReason
, 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 do parametrugetOrCreateInteractiveWatchFaceClient
dodaliśmy parametr opcjonalnyPreviewImageUpdateRequestedListener
, 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 ustawiać tarcza zegarka. Należy ją zaktualizować w razie potrzeby w odpowiedzi na zmiany stylu. Zamiast używaćWallpaperManager
do obserwowania zmian kolorów, dodaliśmyOnWatchFaceColorsListener
doInteractiveWatchFaceClient
. (I490bc) - Dodaliśmy klasę
WatchFaceColors
, która zawiera 3 najpopularniejsze 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
(a także 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)- Przerzuć
PreviewImageUpdateRequestedListener
naConsumer<>
(Ia875d) - Zastąp niestandardowy typ pojedynczej abstrakcyjnej metody (SAM)
OnWatchfaceColorsListener
ogólnym typem SAM w języku Java (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 pracujemy. Nowe formaty mogą ulec zmianie bez powiadomienia. Obecnie
CanvasComplicationDrawable
nie obsługuje żadnych silników renderujących. - 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), element
ComplciationSlots
ma 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
, ale z innym zakresem i wartością całkowitą.RangedValueComplicationData
Wprowadziliśmy też eksperymentalną funkcjęGoalProgressComplicationData
, która jest podobna do funkcjiRangedValueComplicationData
, ale służy do obliczania postępów w realizacji celu, gdy 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 wag i kolorów) oraz opcjonalnego tekstu, tytułu lub obrazu. 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) - Eksperymentalna funkcja
ColorRamps
używana opcjonalnie przezRangedValueComplicationData
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 też renderowane w postaci równych, stałych kroków kolory. (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 funkcjiRangedValueComplicationData
. 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
eksperymentalny podpowiedźdrawSegmented
. Sygnalizuje to procesorom renderowania, aby rysowały wskaźnik wartości zakresu 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 i zdecydowanie zalecamy jej zainstalowanie użytkownikom wersji 1.1.0.
Poprawki błędów
Inicjalizacja tarczy zegarka jest asynchroniczna, więc jeśli otrzymasz widżet, zanim tarcza będzie gotowa, zostanie on umieszczony na liście
pendingInitialComplications
i zastosowany później. NiestetypendingInitialComplications
została zastosowana zbyt wcześnie, co oznacza, że podczas inicjowania tarczy zegarka istniał okres, w którym komplikacje były nadal umieszczane napendingInitialComplications
i ignorowane. Problem został już rozwiązany. Ponadto ta poprawka rozwiązuje 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 – jak mamy nadzieję – występuje tylko teoretycznie, gdy trzeba scalić wielependingInitialComplications
. (0d03ba3)Rozwiązanie problemu z potencjalnym zakleszczeniem w funkcji
InteractiveInstanceManager
, w której funkcjagetExistingInstanceOrSetPendingWallpaperInteractiveWatchFaceInstance
blokowała zamek dłużej niż to było konieczne. Zazwyczajengine.setUserStyle
jest szybka, ale jeśli z jakiegoś powodu tak się nie stanie, może dojść do blokady lub nieoczekiwanego zamknięcia aplikacji. Ta poprawka usuwa z blokady niepotrzebne operacje, eliminując tym samym możliwość wystąpienia blokady warunkowej (5a2adca).Rozwiązanie kilku problemów, które spowodowały, że
WatchFaceService
. 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 za pomocą interfejsu edytora. Możesz teraz określić oddzielne ikony do wykorzystania na tarczy zegarka i w edytorze towarzyszącym.
- 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
, które będą używane w edytorach. - Eksperymentalna obsługa stylów „flavors”, czyli wyselekcjonowanej kolekcji stylów, która będzie widoczna w edytorze towarzyszącym.
- Podczas edycji dwóch załadowanych tarcz zegarka tarcze mogą teraz współdzielić 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, które są przesyłane na tarczę zegarka i mogą być przechowywane w pamięci podręcznej oraz aktualizowane automatycznie. Na przykład prognoza pogody na dziś w różnych godzinach lub kilka 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. Eksperymentujemy z użyciem widżetuBoundingArc
na krawędzi, a następnie nadrawHighlight
, ale nie zalecamy używania go w tym czasie.
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 niesynchronizowanymBaseEditorSession.close
polega na tym, żeComplicationDataSourceInfoRetriever
jest zwalniany zbyt późno, co powoduje spam w logcat. Prawdopodobnie nie było to groźne, ale spam w 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
. Dzięki temu możesz 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, gdy uzyskiwano dostęp do nieistniejących wymaganych pól. (55ffdf5) - Usunęliśmy błąd, który powodował, że
setComplicationData
usuwał 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
przy odbiorze 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
WatchFaceService
XML, które było ładowane z nieprawidłowego pakietu (dfa06f3). - Format szablonu szkiców korzysta teraz z pakietu wewnętrznego. Nie chcemy, aby zastępniki powodowały problemy z dotychczasowymi tarczami 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 niepotrzebny 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łana częściowaComplicationSlotBounds
(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śmy elementNoDataComplication
o opcjonalne dane zastępcze ComplicationData i dodaliśmy elementyComplicationText.PLACEHOLDER
,MonochromaticImage.PLACEHOLDER
,SmallImage.PLACEHOLDER
iPhotoImage.PLACEHOLDER
, które można używać tylko w kontekście elementu zastępczegoNoDataComplicationData
. 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ż problem został rozwiązany w ramach frameworka, więc wszystkie powiązane interfejsy API zostały usunięte. Aby wywołaćPendingIntents
, tarcze zegarka nie muszą nic specjalnego robić, nawet jeśli przycisk ekranu głównego został niedawno naciśnięty. (I1f2e8) - Dodaliśmy parametr
RendererParameters.isForScreenShot
, który będzie miał wartość true, jeśli renderowanie służy do zrobienia 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 uprzywilejowane uprawnieniecom.google.android.wearable.permission.USE_IMMEDIATE_COMPLICATION_UPDATE
. (Ie6b23) - Zaktualizowano opcjonalność w jądrze i pakiecie zgodności aplikacji, aby dopasować je do wersji 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.
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, ponieważ nigdy nie było planowane, aby można je było ustawiać. Ich ustawienie prowadziłoby do nieokreślonego zachowania. (I0d9e7) - Dodaliśmy do
ComplicationSlot.Builder
i odpowiednich metod dostępu wandroidx.wear.watchface.client.ComplicationSlotState
zmiennesetNameResourceId
isetScreenReaderNameResourceId
(które odwołują się do zasobów ciągu tekstowego). Dzięki temu system może pobierać nazwy ComplicationSlots na potrzeby edytorów i czytników 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) - Poprawiono 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 przypadkach, co ułatwia kodowi klienta wychwytywanie błędów z tarczy zegarka. (I78785) - Klasy
ComplicationData
i 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. Upraszcza to 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 których każda będzie miała osobne opcje stylizacji zdefiniowane 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 szarejowany 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że ona być przechowywana w pamięci podręcznej i automatycznie aktualizowana. Na przykład prognoza pogody na dziś w różnych godzinach lub kilka nadchodzących wydarzeń w kalendarzu. InterfejsComplicationRequestListener
został rozszerzony o nową metodęonComplicationDataTimeline
, która umożliwia zwracanie tych danych.Rozszerzono parametr
DefaultComplicationDataSourcePolicy
, aby umożliwić określenie wartościComplicationType
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: ze względu na obciążenie pamięci dostawcy widżetów synchronicznych mogą mieć ograniczone możliwoś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
ComplicationData.isCached
zostało zmienione natapActionLostDueToSerialization
, co jest przydatne przy określaniu, czy slot funkcji dodatkowych powinien być renderowany 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 ograniczonym czasem wyświetlania, która zostanie dostarczona na tarczę zegarka. Możesz ją zapisać w pamięci podręcznej i zaktualizować automatycznie. Na przykład prognoza pogody na dziś w różnych godzinach lub kilka 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łSuspendingTimelineComplicationDataSourceService
w języku Kotlin. (Idecdc) - Dodano
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 zegarka wyświetlania ostatnich znanych wartości danych widżetów po załadowaniu, dopóki system nie zaktualizuje ich. Jest nowa metoda interfejsu APIWatchFaceControlClient.hasComplicationCache
przeznaczona dla producentów OEM. Może to wpłynąć na strategię systemu dotyczącą wysyłania widżetów na tarczę zegarka. DodatkowoComplicationData
ma właściwośćisCached
i zalecamy, aby elementy podglądu w pamięci podręcznej były renderowane inaczej, ponieważtapAction
nie może być przechowywane w pamięci podręcznej i będzienull
w elementach podglądu w pamięci podręcznej. (I404b0) - Identyfikator instancji tarczy jest teraz dostępny na stronie
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 wystąpienia 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. 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
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 tarcz zegarków 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 złącza 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ć też konieczne zastąpienie wartościonStartSynchronousComplicationRequests
ionStopInteractiveComplicationRequests
, aby otrzymywać powiadomienia o tym, kiedy komplikacja 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
- Poprawiono 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 wiele 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 temu łatwiej jest teraz opracować edytor tarczy zegarka za pomocą pakietu androidx.wear.watchface.editor. Tarczę zegarka można edytować w 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 tarcz 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).
- Przekazywanie
InteractiveWatchFaceImpl.onDestroy
do wątku interfejsu (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 migracje przepływu. (087cf9e)
Zapewnienie prawidłowej kolejności zapisywania ustawień bezpośredniego rozruchu. Chcemy, aby funkcja writeDirectBootPrefs zawsze była wykonywana po initStyleAndComplications, ponieważ opóźnienie inicjowania wątku interfejsu użytkownika może spowodować opóźnienie inicjowania wątku interfejsu użytkownika (37650ac).
Upewnij się, że wywołano metodę Renderer.onDestroy. W przypadku, gdy mechanizm renderowania został utworzony, ale nie udało się zainicjować WF, a wywołano metodę Engine.onDestroy, musimy wywołać metodę Renderer.onDestroy. (f9952dc)
Optymalizacja/poprawka do isBatteryLowAndNotCharging. Ta poprawka przesuwa początkową konfigurację isBatteryLowAndNotCharging do wcześniejszego miejsca, co oznacza, że można ją wykonać równolegle z createWatchFace. Dodatkowo teraz nasłuchujemy zdarzeń 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
- Klasy 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ż zawieszonymi funkcjami, lecz właściwościamiStateFlow<>
, których wartość jest początkowo pusta. Z klasy podstawowej ListenableEditorSession zostały usunięte 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, więc 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 okna. Pamiętaj, że w tym przypadku mogą wystąpić fałszywie negatywne wyniki, ponieważ obsługa została dodana w wersji asop/1756809. W przyszłości funkcja będzie zwracać 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)
- Zmiana wartości CurrentUserStyleRepository.userStyle nie jest już możliwa. (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 elementów nieużywanych przez InteractiveWatchFaceImpl.(fce4af8, b/199485839)