Créer un service de cadran

Un cadran est un service préinstallé dans une application Wear OS. Lorsqu'un utilisateur sélectionne un cadran disponible, celui-ci s'affiche et les méthodes de rappel de service sont appelées.

Lorsqu'un utilisateur installe une application Wear qui possède des cadrans, ceux-ci sont disponibles sur la montre à l'aide du sélecteur de cadran. L'utilisateur peut également sélectionner un cadran dans une application associée sur le téléphone jumelé.

Cette page explique comment configurer un projet Wear OS pour inclure des cadrans et implémenter un service de cadran.

Créer un projet de cadran

Remarque : Nous vous recommandons d'utiliser Android Studio pour le développement sur Wear OS, car il fournit des options de configuration de projet, d'inclusion dans la bibliothèque et de packaging.

Procédez comme suit pour créer un projet dans Android Studio pour votre cadran :

  1. Cliquez sur File > New > New Project (Fichier > Nouveau > Nouveau projet).
  2. Dans la fenêtre Select a project template (Sélectionner un modèle de projet), cliquez sur l'onglet Wear, puis sélectionnez Watch Face (Cadran) dans la liste des options et cliquez sur Next (Suivant).
  3. Dans la fenêtre Configure your project (Configurer votre projet), acceptez les valeurs par défaut, puis cliquez sur Finish (Terminer).

Android Studio crée un projet avec un module app pour votre service de cadran.

Dépendances

Android Studio ajoute automatiquement les dépendances requises dans vos fichiers build.gradle. La bibliothèque de cadrans AndroidX est incluse dans les dépendances. Consultez l'exemple de code sur GitHub pour en savoir plus sur cette bibliothèque.

Documentation de référence de l'API pour la bibliothèque Support relative aux accessoires connectés

La documentation de référence fournit des informations détaillées sur les classes que vous utilisez pour implémenter des cadrans. Parcourez la documentation de référence de l'API pour trouver la bibliothèque Support relative aux accessoires connectés.

Déclarer des autorisations

Un cadran nécessite l'autorisation WAKE_LOCK. Ajoutez l'autorisation suivante aux fichiers manifeste de l'application Wear OS et de l'application de téléphone mobile sous l'élément 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>

Compatibilité avec les appareils rectangulaires

Par défaut, les cadrans des appareils rectangulaires sont exécutés en mode d'émulation carré pour prendre en charge les cadrans conçus pour les appareils carrés et circulaires. Si vous souhaitez utiliser des appareils rectangulaires, remplacez ce comportement en créant une balise meta-data sur le cadran service de votre fichier manifest et en définissant android.service.wallpaper.square_mode sur false, comme indiqué dans l'exemple de code suivant :

<manifest ...>
    <application ...>
        <service
            android:name=".MyWatchFace"
            android:label="My Watch Face"
            android:permission="android.permission.BIND_WALLPAPER">
            ...
            <meta-data
                android:name="android.service.wallpaper.square_mode"
                android:value="false" />
            ...
        </service>
    ...
    </application>
    ...
</manifest>

Implémenter les méthodes de service et de rappel

Les cadrans de Wear OS sont implémentés en tant que WatchFaceService. L'implémentation d'un WatchFaceService nécessite la création de trois objets : UserStyleSchema, ComplicationSlotsManager et WatchFace.

Ces trois objets sont spécifiés en remplaçant trois méthodes abstraites de WatchFaceService, comme indiqué dans l'exemple suivant :

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

}

Enregistrer le service du cadran

Une fois que vous avez mis en œuvre le service de cadran, enregistrez-le dans le fichier manifeste de l'application connectée. Lorsque les utilisateurs installent cette application, le système utilise les informations du service pour rendre le cadran disponible dans l'application Wear OS associée et dans le sélecteur de cadran de l'objet connecté.

L'exemple suivant montre comment enregistrer une implémentation du cadran sous l'élément <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"
        android:resource="@drawable/preview_analog" />
    <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>

L'application associée Wear OS by Google et le sélecteur de cadran sur l'accessoire connecté utilisent l'image d'aperçu définie par l'entrée de métadonnées com.google.android.wearable.watchface.preview lors de la présentation des cadrans installés sur l'appareil. Pour obtenir ce drawable, exécutez le cadran sur votre appareil Wear OS ou dans une instance d'émulateur et effectuez une capture d'écran. Sur les appareils Wear équipés d'écrans HDPI, la taille de l'image d'aperçu est généralement de 320 x 320 pixels.

Les cadrans très différents sur les appareils arrondis peuvent fournir à la fois des images d'aperçu arrondies et carrées. Pour spécifier une image d'aperçu arrondie, utilisez l'entrée de métadonnées com.google.android.wearable.watchface.preview_circular. Si un cadran inclut les deux types d'images d'aperçu, l'application associée et le sélecteur de cadran sur l'accessoire connecté affichent l'image appropriée, selon la forme de la montre. Si aucune image d'aperçu arrondie n'est fournie, l'image d'aperçu carrée est utilisée pour les appareils carrés et ronds. Pour les appareils ronds, une image d'aperçu carrée est recadrée à l'aide d'une forme circulaire.

L'entrée de métadonnées android.service.wallpaper spécifie le fichier de ressources watch_face.xml, qui contient un élément wallpaper, comme illustré dans l'exemple suivant :

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

Votre application connectée peut contenir plusieurs cadrans. Vous devez ajouter une entrée de service au fichier manifeste de l'appli connectée pour chaque implémentation du cadran.

Consultez les ressources associées suivantes :