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 propose différents 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 manifestes 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>

Prendre en charge le démarrage direct

Vous devez rendre votre cadran disponible avant le déverrouillage par l'utilisateur en suivant les consignes relatives au démarrage direct :

  1. Définissez l'attribut android:directBootAware sur true pour votre service dans votre fichier manifeste.
  2. Votre cadran doit stocker des informations dans l'espace de stockage chiffré de l'appareil.

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

Lorsque les cadrans installés sont présentés à l'utilisateur, 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_circular. 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.

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 de cadran.

Consultez les ressources associées suivantes :