Zifferblattdienst erstellen

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

Wenn ein Nutzer eine Wear-App mit Zifferblättern installiert, wird die Smartwatch Zifferblätter sind auf der Uhr über die Zifferblattauswahl 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 enthalten um ein Zifferblatt zu implementieren.

Zifferblatt-Projekt erstellen

Hinweis:Wir empfehlen die Verwendung von Android Studio für die Wear OS-Entwicklung, da Sie umfasst die Projekteinrichtung, die Einbindung von Bibliotheken und die Paketerstellung.

Führen Sie die folgenden Schritte aus, um Projekt erstellen in Android Studio für Ihr Zifferblatt:

  1. Klicken Sie auf Datei > Neu > Neues Projekt.
  2. Wählen Sie im Fenster Projektvorlage auswählen die Option den Tab Wear und wählen Sie Zifferblatt und klicken Sie in der Liste der Optionen auf Weiter.
  3. Akzeptieren Sie die Änderungen im Fenster Projekt konfigurieren. und klicken Sie auf Fertigstellen.

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

Abhängigkeiten

Android Studio fügt die erforderlichen Abhängigkeiten automatisch in build.gradle hinzu Dateien. In den Abhängigkeiten ist Folgendes enthalten: AndroidX Zifferblattbibliothek sieh dir die <ph type="x-smartling-placeholder"></ph> Codebeispiel auf GitHub finden Sie weitere Informationen zu dieser Bibliothek.

API-Referenz der Wearable-Supportbibliothek

Die Referenzdokumentation enthält detaillierte Informationen zu den Klassen, die Sie für die Zifferblätter implementieren. In der API-Referenz für die Wearable-Supportbibliothek.

Erklärung von Berechtigungen

Für Zifferblätter ist die Berechtigung WAKE_LOCK erforderlich. Füge den Manifestdateien der Wear OS-App die folgende Berechtigung hinzu: und die mobile App unter dem Element 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>

Direct-Boot-Unterstützung

Sie müssen Ihr Zifferblatt vor dem Entsperren durch den Nutzer verfügbar machen. Gehen Sie dazu so vor: Direct Boot-Anleitung:

  1. Setzen Sie das Attribut android:directBootAware für Ihren Dienst intrue in deinem Manifest.
  2. Auf deinem Zifferblatt sollten Informationen in gespeichert werden Verschlüsselter Speicher Ihres Geräts.

Dienst- und Callback-Methoden implementieren

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

Diese drei Objekte werden angegeben, indem drei abstrakte Methoden aus WatchFaceService, 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, kannst du die Implementierung im Manifest registrieren der Wearable-App. Wenn Nutzer diese App installieren, verwendet das System die Informationen zu den Dienst, um das Zifferblatt im verfügbar zu machen. Wear OS-Companion-App und in der Zifferblattauswahl auf dem Wearable-Gerät

Das folgende Beispiel zeigt, wie die Implementierung eines Zifferblatts registriert wird. im Bereich <application>-Element:

<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-Gerät verwenden die Vorabversion durch den Metadateneintrag com.google.android.wearable.watchface.preview_circular definiertes Bild, wenn Nutzern werden alle auf dem Gerät installierten Zifferblätter angezeigt. Um dieses Drawable zu erhalten, das Zifferblatt auf Ihrem Wear OS-Gerät oder in einer Emulatorinstanz ausführen und einen Screenshot erstellen. Auf Wearable Geräte mit HD-Bildschirmen, ist das Vorschaubild normalerweise 320 x 320 Pixel groß.

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

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

Deine Wearable-App kann mehr als ein Zifferblatt enthalten. Sie müssen dem Feld Manifestdatei der Wearable-App für jede Zifferblattimplementierung.

Weitere Informationen finden Sie in den folgenden verwandten Ressourcen: