Creare un servizio per il quadrante

Un quadrante è un servizio presentato in un'app Wear OS. Quando un utente seleziona un quadrante disponibile, viene visualizzato il quadrante e vengono attivati i metodi di callback del servizio.

Quando un utente installa un'app Wear che dispone di quadranti, questi sono disponibili sull'orologio utilizzando il relativo selettore. In alternativa, l'utente può selezionare un quadrante da un'app complementare sullo smartphone accoppiato.

In questa pagina viene descritto come configurare un progetto Wear OS per includere quadranti e come implementare un servizio per i quadranti.

Creare un progetto di quadranti

Nota: ti consigliamo di utilizzare Android Studio per lo sviluppo in Wear OS, in quanto fornisce la configurazione dei progetti, l'inclusione della libreria e semplifica la presentazione.

Completa i seguenti passaggi per creare un progetto in Android Studio per il tuo quadrante:

  1. Fai clic su File > Nuovo > Nuovo progetto.
  2. Nella finestra Seleziona un modello di progetto, seleziona la scheda Wear, quindi seleziona Quadrante dall'elenco di opzioni e fai clic su Avanti.
  3. Nella finestra Configura il tuo progetto, accetta i valori predefiniti e fai clic su Fine.

Android Studio crea un progetto con un modulo app per il tuo servizio di quadranti.

Dipendenze

Android Studio aggiunge automaticamente le dipendenze richieste nei file build.gradle. Nella dipendenza è inclusa la libreria di quadranti AndroidX; consulta l' esempio di codice su GitHub per avere informazioni dettagliate su questa libreria.

Riferimento API della libreria di supporto indossabile

La documentazione di riferimento fornisce informazioni dettagliate sulle classi utilizzate per implementare i quadranti. Consulta la documentazione di riferimento API per la libreria di supporto per dispositivi indossabili.

Dichiara le autorizzazioni

Un quadrante richiede l'autorizzazione WAKE_LOCK. Aggiungi la seguente autorizzazione ai file manifest sia dell'app per Wear OS sia dell'app per dispositivi mobili nell'elemento 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>

Supporta l'avvio diretto

Devi rendere disponibile il quadrante prima dello sblocco dell'utente seguendo le indicazioni relative all'avvio diretto:

  1. Imposta l'attributo android:directBootAware su true per il servizio nel manifest.
  2. Il quadrante dovrebbe memorizzare le informazioni nello spazio di archiviazione criptato del dispositivo.

Implementare i metodi di servizio e callback

I quadranti in Wear OS sono implementati come WatchFaceService. L'implementazione di un WatchFaceService richiede la creazione di tre oggetti: UserStyleSchema, ComplicationSlotsManager e WatchFace.

Questi tre oggetti vengono specificati sostituendo tre metodi astratti da WatchFaceService, come mostrato nell'esempio seguente:

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

}

Registra il servizio del quadrante

Dopo aver implementato il servizio del quadrante, registra l'implementazione nel file manifest dell'app indossabile. Quando gli utenti installano questa app, il sistema utilizza le informazioni sul servizio per rendere disponibile il quadrante nell' app complementare Wear OS e nel selettore del quadrante sul dispositivo indossabile.

Il seguente esempio mostra come registrare un'implementazione del quadrante nell'elemento <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>

L'app complementare Wear OS by Google e il selettore del quadrante sul dispositivo indossabile utilizzano l'immagine di anteprima definita dalla voce dei metadati com.google.android.wearable.watchface.preview_circular quando presentano agli utenti tutti i quadranti installati sul dispositivo. Per ottenere questo Drawable, esegui il quadrante sul tuo dispositivo Wear OS o in un'istanza dell'emulatore e acquisisci uno screenshot. Sui dispositivi Wear con schermi HDMI, l'immagine di anteprima ha in genere una dimensione di 320 x 320 pixel.

La voce di metadati android.service.wallpaper specifica il file di risorse watch_face.xml, che contiene un elemento wallpaper, come mostrato nell'esempio seguente:

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

La tua app indossabile può contenere più di un quadrante. Devi aggiungere una voce di servizio nel file manifest dell'app indossabile per ciascuna implementazione dei quadranti.

Consulta le seguenti risorse correlate: