Utwórz usługę tarczy zegarka

Tarcza zegarka to usługa zapakowana w aplikację na Wear OS. Gdy użytkownik wybierze dostępną tarczę, zostaną one wyświetlone i wykonane są metody wywołania zwrotnego usługi.

Gdy użytkownik zainstaluje aplikację na Wear, która ma tarcze zegarka, będą one dostępne na zegarku za pomocą selektora tarcz. Użytkownik może też wybrać tarczę w aplikacji towarzyszącej na sparowanym telefonie.

Z tego artykułu dowiesz się, jak skonfigurować projekt na Wear OS tak, aby obejmował tarcze zegarka, oraz jak wdrożyć usługę tarczy zegarka.

Tworzenie projektu tarczy zegarka

Uwaga: na potrzeby programowania na Wear OS zalecamy używanie Android Studio, ponieważ zapewnia ono konfigurację projektu, uwzględnianie biblioteki i ułatwienia tworzenia pakietów.

Aby utworzyć projekt dla tarczy zegarka w Android Studio, wykonaj te czynności:

  1. Kliknij File (Plik) > New (Nowy) > New project (Nowy projekt).
  2. W oknie Wybierz szablon projektu wybierz kartę Wear, z listy opcji wybierz Tarcza zegarka i kliknij Dalej.
  3. W oknie Skonfiguruj projekt zaakceptuj wartości domyślne i kliknij Zakończ.

Android Studio utworzy projekt z modułem app na potrzeby usługi tarczy zegarka.

Zależności

Android Studio automatycznie dodaje wymagane zależności w plikach build.gradle. Zależności obejmuje biblioteka tarcz zegarka z AndroidemX. Więcej informacji o tej bibliotece znajdziesz w przykładowym kodzie na GitHubie.

Dokumentacja interfejsu API biblioteki pomocy do urządzeń do noszenia

Dokumentacja referencyjna zawiera szczegółowe informacje o klasach, których używasz do implementacji tarcz zegarka. Przejrzyj dokumentację referencyjną interfejsu API, aby znaleźć bibliotekę pomocy do urządzeń do noszenia.

Deklarowanie uprawnień

Tarcza zegarka wymaga uprawnienia WAKE_LOCK. Dodaj te uprawnienia do plików manifestu aplikacji na Wear OS i aplikacji na telefon komórkowy w elemencie manifest:

<manifest ...>
    <uses-permission
        android:name="android.permission.WAKE_LOCK" />

    <!-- Required for complications to receive complication data and open the provider chooser. -->
    <uses-permission
        android:name="com.google.android.wearable.permission.RECEIVE_COMPLICATION_DATA"/>
    ...
</manifest>

Obsługa rozruchu bezpośredniego

Musisz udostępnić tarczę przed jej odblokowaniem przez użytkownika, postępując zgodnie ze wskazówkami dotyczącymi rozruchu bezpośredniego:

  1. Ustaw atrybut android:directBootAware na true dla usługi w pliku manifestu.
  2. Tarcza zegarka powinna przechowywać informacje w zaszyfrowanej pamięci urządzenia.

Implementacja usług i metod wywołania zwrotnego

Tarcze zegarka w Wear OS są zaimplementowane jako WatchFaceService. Implementacja WatchFaceService wymaga utworzenia 3 obiektów: UserStyleSchema, ComplicationSlotsManager i WatchFace.

Te 3 obiekty są określane przez zastąpienie 3 metod abstrakcyjnych z WatchFaceService, które widać w tym przykładzie:

Kotlin

class CustomWatchFaceService : WatchFaceService() {

    /**
     * The specification of settings the watch face supports.
     * This is similar to a database schema.
     */
    override fun createUserStyleSchema(): UserStyleSchema = // ...

    /**
     * The complication slot configuration for the watchface.
     */
    override fun createComplicationSlotsManager(
        currentUserStyleRepository: CurrentUserStyleRepository
    ): ComplicationSlotsManager = // ...

    /**
     * The watch face itself, which includes the renderer for drawing.
     */
    override suspend fun createWatchFace(
        surfaceHolder: SurfaceHolder,
        watchState: WatchState,
        complicationSlotsManager: ComplicationSlotsManager,
        currentUserStyleRepository: CurrentUserStyleRepository
    ): WatchFace = // ...

}

Rejestrowanie usługi tarczy zegarka

Po zaimplementowaniu usługi tarczy zegarka zarejestruj implementację w pliku manifestu aplikacji na urządzenie do noszenia. Gdy użytkownik zainstaluje aplikację, system wykorzysta informacje o tej usłudze, aby udostępnić ją w aplikacji towarzyszącej Wear OS i w selektorze tarcz na urządzeniu do noszenia.

Poniższy przykład pokazuje, jak zarejestrować implementację tarczy zegarka za pomocą elementu <application>:

<service
    android:name=".AnalogWatchFaceService"
    android:label="@string/analog_name"
    android:permission="android.permission.BIND_WALLPAPER" >
    <meta-data
        android:name="android.service.wallpaper"
        android:resource="@xml/watch_face" />
    <meta-data
        android:name="com.google.android.wearable.watchface.preview_circular"
        android:resource="@drawable/preview_analog_circular" />
    <intent-filter>
        <action android:name="android.service.wallpaper.WallpaperService" />
        <category
            android:name=
            "com.google.android.wearable.watchface.category.WATCH_FACE" />
    </intent-filter>
</service>

Aplikacja towarzysząca na Wear OS by Google i selektor tarczy zegarka na urządzeniu do noszenia używają obrazu z podglądu zdefiniowanego we wpisie metadanych com.google.android.wearable.watchface.preview_circular podczas prezentowania użytkownikom wszystkich tarcz zegarka zainstalowanych na urządzeniu. Aby uzyskać ten element, uruchom tarczę zegarka na urządzeniu z Wear OS lub emulatorze i zrób zrzut ekranu. Na urządzeniach Wear z ekranami hdpi obraz podglądu ma zazwyczaj rozmiar 320 x 320 pikseli.

Wpis metadanych android.service.wallpaper określa plik zasobów watch_face.xml, który zawiera element wallpaper. W tym przykładzie:

<?xml version="1.0" encoding="UTF-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android" />

Aplikacja do noszenia może zawierać więcej niż jedną tarczę zegarka. W przypadku każdej implementacji tarczy zegarka musisz dodać wpis usługi do pliku manifestu aplikacji na urządzenie do noszenia.

Zapoznaj się z tymi powiązanymi materiałami: