Zifferblattdienst erstellen

Ein Zifferblatt ist ein Dienst, der in einer Wear OS-App verpackt ist. Wenn ein Nutzer ein verfügbares Zifferblatt auswählt, wird das Zifferblatt angezeigt und die Dienst-Callback-Methoden werden aufgerufen.

Wenn ein Nutzer eine Wear-App mit Zifferblättern installiert, sind diese über die Zifferblattauswahl auf der Smartwatch verfügbar. Alternativ kann der Nutzer ein Zifferblatt aus einer Companion-App auf dem gekoppelten Smartphone auswählen.

Auf dieser Seite wird beschrieben, wie du ein Wear OS-Projekt so konfigurierst, dass Zifferblätter eingeschlossen werden, und wie du einen Zifferblattdienst implementierst.

Zifferblattprojekt erstellen

Hinweis:Für die Wear OS-Entwicklung empfehlen wir Android Studio, da dieses Tool die Projekteinrichtung, die Einbindung von Bibliotheken und die Paketerstellung vereinfacht.

Führe die folgenden Schritte aus, um in Android Studio ein Projekt für dein Zifferblatt zu erstellen:

  1. Klicken Sie auf Datei > Neu > Neues Projekt.
  2. Wähle im Fenster Projektvorlage auswählen den Tab Wear aus. Wähle dann in der Liste der Optionen Watch Face aus und klicke auf Weiter.
  3. Übernehmen Sie im Fenster Projekt konfigurieren die Standardwerte und klicken Sie auf Fertigstellen.

Android Studio erstellt ein Projekt mit einem app-Modul für deinen Zifferblattdienst.

Abhängigkeiten

Android Studio fügt den build.gradle-Dateien automatisch die erforderlichen Abhängigkeiten hinzu. Die Abhängigkeiten enthalten die Bibliothek für AndroidX-Zifferblatt. Weitere Informationen zu dieser Bibliothek finden Sie im Codebeispiel auf GitHub.

API-Referenz der Wearable-Supportbibliothek

Die Referenzdokumentation enthält detaillierte Informationen zu den Klassen, die Sie zum Implementieren von Zifferblättern verwenden. Informationen zur Wearable-Supportbibliothek findest du in der API-Referenzdokumentation.

Deklarieren von Berechtigungen

Für ein Zifferblatt ist die Berechtigung WAKE_LOCK erforderlich. Füge den Manifestdateien der Wear OS-App und der Smartphone-App unter dem Element manifest die folgende Berechtigung hinzu:

<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>

Direct Boot unterstützen

Du musst dein Zifferblatt verfügbar machen, bevor der Nutzer entsperrt wird. Folge dazu der Anleitung für den direkten Start:

  1. Legen Sie das Attribut android:directBootAware für Ihren Dienst in Ihrem Manifest auf true fest.
  2. Dein Zifferblatt sollte Informationen im mit dem Gerät verschlüsselten Speicher speichern.

Dienst- und Callback-Methoden implementieren

Zifferblätter werden in Wear OS als WatchFaceService implementiert. Für die Implementierung von WatchFaceService müssen drei Objekte erstellt werden: UserStyleSchema, ComplicationSlotsManager und WatchFace.

Zum Angeben dieser drei Objekte werden drei abstrakte Methoden aus WatchFaceService überschrieben, wie im folgenden Beispiel gezeigt:

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 = // ...

}

Zifferblattdienst registrieren

Nachdem du den Zifferblattdienst implementiert hast, registriere die Implementierung in der Manifestdatei der Wearable-App. Wenn Nutzer diese App installieren, nutzt das System die Informationen zum Dienst, um das Zifferblatt in der Wear OS Companion App und in der Zifferblattauswahl auf dem Wearable verfügbar zu machen.

Im folgenden Beispiel wird gezeigt, wie eine Zifferblattimplementierung unter dem Element <application> registriert wird:

<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>

Die Companion-App „Wear OS by Google“ und die Zifferblattauswahl auf dem Wearable verwenden das Vorschaubild, das durch den Metadateneintrag com.google.android.wearable.watchface.preview_circular definiert ist, wenn Nutzern alle auf dem Gerät installierten Zifferblätter angezeigt werden. Um dieses Drawable zu erhalten, musst du das Zifferblatt auf deinem Wear OS-Gerät oder in einer Emulatorinstanz ausführen und einen Screenshot erstellen. Auf Wear-Geräten mit HDPI-Bildschirmen ist das Vorschaubild in der Regel 320 × 320 Pixel groß.

Der Metadateneintrag android.service.wallpaper gibt die Ressourcendatei watch_face.xml an, die ein wallpaper-Element enthält, wie im folgenden Beispiel gezeigt:

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

Ihre Wearable-App kann mehrere Zifferblatt haben. Du musst der Manifestdatei der Wearable-App für jede deiner Zifferblattimplementierungen einen Diensteintrag hinzufügen.

Weitere Informationen finden Sie in den folgenden Ressourcen: