Eseguire ed eseguire il debug di un riquadro

I riquadri non sono app, quindi vengono implementati e avviati utilizzando meccanismi diversi. Quando su un dispositivo sono attivate le Opzioni sviluppatore (gli emulatori hanno queste funzionalità attivate per impostazione predefinita), diventano disponibili funzionalità aggiuntive che supportano lo sviluppo di riquadri sia in Android Studio che in adb.

Riquadri di deployment

Per eseguire il deployment della tua scheda, puoi installare l'app su un dispositivo fisico o un emulatore utilizzando Android Studio, come descritto in Crea ed esegui l'app. Poi, seguendo gli stessi passaggi degli utenti normali, aggiungi manualmente la scheda al carosello delle schede.

Durante lo sviluppo attivo, potrebbe essere più facile e veloce utilizzare la funzionalità di Android Studio "Wear OS Tile" Run/Debug Configuration. Questo metodo esegue il deployment e l'attivazione automatica della scheda, consentendo un'interazione immediata senza ulteriori passaggi manuali.

Crea la configurazione automaticamente

Il modo più semplice per eseguire il deployment e l'esecuzione di un tile è utilizzare l'icona "Esegui servizio" nel gutter. In questo modo viene creata automaticamente una configurazione di esecuzione, se non esiste già. Per saperne di più, consulta Configurazioni di esecuzione/debug di Wear OS.

Screenshot con una freccia rossa che punta a "▷" nel margine
Fai clic su "▷" nel margine
Screenshot che mostra una freccia rossa che punta al menu a discesa della configurazione di esecuzione e l'opzione di configurazione "TestTileService" delineata in rosso
Viene creata automaticamente una "configurazione di esecuzione"

Crea la configurazione manualmente

Se la configurazione automatica non funziona o se vuoi un maggiore controllo sul risultato, consulta le istruzioni riportate di seguito. Gli screenshot provengono da Android Studio Meerkat (2024.3.1).

  1. Seleziona l'opzione "⋮" ("hamburger") dalla barra del titolo.

    Screenshot con una freccia rossa che punta all'opzione "⋮" ("hamburger") nella barra del titolo.
  2. Seleziona "Modifica…".

    "Modifica…" è la prima opzione nella sezione Configurazione dell'elenco a discesa.
  3. Seleziona "+" per aggiungere una configurazione nella finestra di dialogo visualizzata.

    Screenshot con una freccia rossa che punta a "+".
  4. Seleziona "Wear OS Tile" come tipo di nuova configurazione.

    Screenshot con una freccia rossa che punta all'opzione di configurazione "Wear OS Tile".
  5. Inserisci un nome per la configurazione e seleziona il modulo e il riquadro appropriati.

    Screenshot con tre frecce rosse che indicano le aree della finestra di dialogo.
  6. Tocca "OK". La configurazione verrà visualizzata nella barra del titolo. Tocca il pulsante "▷" ("esegui") per eseguire il deployment e l'attivazione del tile.

Visualizza l'anteprima dei riquadri in Android Studio

A partire dall'aggiornamento delle funzionalità di Android Studio Koala, puoi visualizzare istantanee delle schede della tua app per Wear OS. Questo riquadro è particolarmente utile se l'aspetto della scheda cambia in base alle condizioni, ad esempio contenuti diversi a seconda delle dimensioni del display del dispositivo o un evento sportivo che raggiunge l'intervallo.

I nomi dei gruppi nel riquadro di anteprima corrispondono al nome del gruppo fornito nell'annotazione di anteprima
Riquadro di anteprima dei riquadri in Android Studio.

Aggiungi dipendenze

Includi le seguenti dipendenze nel file build.gradle.kts o build.gradle della tua app:

dependencies {
    implementation("androidx.wear.tiles:tiles-tooling-preview:1.6.2")
    debugImplementation("androidx.wear.tiles:tiles-tooling:1.6.2")
    implementation("androidx.wear:wear-tooling-preview:1.0.0")
}

Configura le anteprime dei riquadri

Per visualizzare un'anteprima dell'aspetto della tua scheda su schermi Wear OS di diverse dimensioni, aggiungi l'annotazione @Preview e passa il parametro device. Tieni presente che questa annotazione @Preview proviene da un pacchetto diverso da quello che utilizzi per le anteprime componibili.

@Preview(device = WearDevices.SMALL_ROUND)
@Preview(device = WearDevices.LARGE_ROUND)
fun tilePreview(context: Context) = TilePreviewData { request ->
    TilePreviewHelper.singleTimelineEntryTileBuilder(
        buildMyTileLayout(context, request.deviceConfiguration)
    ).build()
}

Aggiungi e registra le risorse

Se la tua scheda utilizza risorse Android, devi registrarle nel parametro onTileResourceRequest di TilePreviewData, come mostrato nel seguente snippet di codice:

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithResources(context: Context) = TilePreviewData(
    onTileResourceRequest = { request ->
        Resources.Builder()
            .setVersion(RESOURCES_VERSION)
            .addIdToImageMapping(
                myImageId,
                getImageById(R.drawable.animated_walk)
            )
            .build()
    },
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayout(context, request.deviceConfiguration)
        ).build()
    }
)

Mostra valori specifici dalle origini dati della piattaforma

Se la tua scheda utilizza dati della piattaforma, come battito cardiaco, calorie, distanza e passi, mostra i valori predefiniti per questi dati.

Per mostrare un valore specifico, imposta il parametro platformDataValues durante la creazione dell'oggetto TilePreviewData, come mostrato nello snippet di codice seguente:

@Preview(device = WearDevices.SMALL_ROUND)
fun previewWithPlatformOverride(context: Context) = TilePreviewData(
    platformDataValues = PlatformDataValues.of(
        PlatformHealthSources.Keys.HEART_RATE_BPM,
        DynamicDataBuilders.DynamicDataValue.fromFloat(160f)
    ),
    onTileRequest = { request ->
        TilePreviewHelper.singleTimelineEntryTileBuilder(
            buildMyTileLayoutDynamic(context, request.deviceConfiguration)
        ).build()
    }
)

Manipola i riquadri utilizzando adb

adb può essere utilizzato per installare, rimuovere e attivare i riquadri in modo programmatico durante lo sviluppo.

Nei comandi seguenti, ComponentName è una stringa composta dal nome del pacchetto e da una classe all'interno del pacchetto, ad esempio com.example.wear.tiles/com.example.wear.tiles.PreviewTileService.

add-tile

Aggiunge un riquadro fornito da COMPONENT_NAME e restituisce l'indice.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation add-tile --ecn component [COMPONENT_NAME]

Output di esempio:

Broadcast completed: result=1, data="Index=[0]"

Se un riquadro esiste già nel carosello, viene rimosso e reinserito nella stessa posizione. In caso contrario, viene inserito in Index[0]. Inoltre, se il carosello ha raggiunto la capacità massima, l'ultimo riquadro viene rimosso per fare spazio al nuovo riquadro.

show-tile

Attiva il riquadro all'indice TILE_INDEX.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SYSUI --es operation show-tile --ei index [TILE_INDEX]

Output di esempio:

Broadcast completed: result=1

remove-tile

Rimuove tutte le istanze di riquadri nel carosello associate a COMPONENT_NAME.

adb shell am broadcast -a com.google.android.wearable.app.DEBUG_SURFACE --es operation remove-tile --ecn component [COMPONENT_NAME]

Output di esempio:

result=1, data="Tile(s) removed."

Valori restituiti

  • result=0: nessun broadcast receiver ha risposto a questo comando, molto probabilmente perché la versione di Wear OS è troppo vecchia o il processo di debug non è in esecuzione.
  • result=1: operazione riuscita.
  • result>1: errore.