Eseguire ed eseguire il debug di un riquadro

Poiché non sono app, i riquadri vengono implementati e lanciati utilizzando meccanismi diversi. Quando su un dispositivo sono attivate le Opzioni sviluppatore (queste funzionalità sono attivate per impostazione predefinita negli emulatori), diventano disponibili funzionalità aggiuntive che supportano lo sviluppo dei riquadri sia in Android Studio sia in adb.

Eseguire il deployment dei riquadri

Per eseguire il deployment del riquadro, puoi installare l'app su un dispositivo fisico o un emulatore utilizzando Android Studio, come descritto in Creare ed eseguire l'app. Poi, seguendo gli stessi passaggi degli utenti normali, aggiungi manualmente il riquadro al carosello di riquadri.

Durante lo sviluppo attivo, potresti trovare più facile e veloce utilizzare la funzionalità "Wear OS Tile" Run/Debug Configuration di Android Studio. Questo metodo consente di implementare e attivare automaticamente il riquadro, consentendo un'interazione immediata senza ulteriori passaggi manuali.

Creare la configurazione automaticamente

Il modo più semplice per eseguire il deployment e l'esecuzione di un riquadro è utilizzare l'icona "Esegui servizio" nel riquadro di delimitazione. Viene creata automaticamente una configurazione di esecuzione se non esiste già. Per ulteriori informazioni, consulta Configurazioni di esecuzione/debug di Wear OS.

Screenshot con freccia rossa che indica "▷" nel riquadro
Fai clic su "▷" nella gronda
Screenshot che mostra la freccia rossa che indica il menu a discesa della configurazione dell'esecuzione e l'opzione di configurazione "TestTileService" evidenziata in rosso
Viene creata automaticamente una "configurazione di esecuzione"

Creare 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 sono di Android Studio Meerkat (2024.3.1).

  1. Seleziona l'opzione "⋮" ("menu a tre linee") nella barra del titolo.

    Screenshot con una freccia rossa che indica l'opzione "⋮" ("menu a tre linee") 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 indica "+".
  4. Seleziona "Riquadro Wear OS" come tipo della nuova configurazione.

    Screenshot con la freccia rossa che indica l'opzione di configurazione "Riquadro Wear OS".
  5. Inserisci un nome per la configurazione e seleziona il modulo e il riquadro in base alle esigenze.

    Screenshot con tre frecce rosse che indicano 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 riquadro.

Visualizzare l'anteprima dei riquadri in Android Studio

A partire dal rilascio di funzionalità di Android Studio Koala, puoi visualizzare gli istantanei delle schede della tua app per Wear OS. Questo riquadro è particolarmente utile se l'aspetto del riquadro cambia in base a determinate 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 indicato nell'annotazione di anteprima
Riquadro di anteprima dei riquadri in Android Studio.

Aggiungi le dipendenze

Includi le seguenti dipendenze nel file build.gradle.kts o build.gradle dell'app:

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

Configurare le anteprime dei riquadri

Per visualizzare un'anteprima dell'aspetto del riquadro su diversi display Wear OS, aggiungi l'annotazione @Preview e passa il parametro device. Tieni presente che questa annotazione @Preview proviene da un pacchetto diverso da quello utilizzato per le anteprime componibili.

import androidx.wear.tiles.tooling.preview.Preview

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

Aggiungere e registrare le risorse

Se il riquadro utilizza risorse Android, dovrai registrarle nel parametro onTileResourceRequest di TilePreviewData, come mostrato nel seguente snippet di codice:

import androidx.wear.tiles.tooling.preview.Preview

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

fun getImageById(
    @DrawableRes id: Int,
): ImageResource =
    ImageResource.Builder()
        .setAndroidResourceByResId(
            AndroidImageResourceByResId.Builder()
                .setResourceId(id)
                .build(),
        )
        .build()

Mostrare valori specifici dalle origini dati della piattaforma

Se il riquadro utilizza i dati della piattaforma, come battito cardiaco, calorie, distanza e passi, vengono visualizzati i valori predefiniti.

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

import androidx.wear.tiles.tooling.preview.Preview

@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(
            buildMyTileLayout()
        ).build()
    }
)

Manipolare i riquadri utilizzando adb

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

Nei seguenti comandi, 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 nel carosello è già presente un riquadro, viene rimosso e reinserito nella stessa posizione. In caso contrario, viene inserito in Index[0]. Inoltre, se il carosello è alla sua 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 dei 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 ricevitore di trasmissione ha risposto a questo comando, molto probabilmente perché la versione di Wear OS è troppo vecchia o perché il processo di debug non è in esecuzione.
  • result=1: operazione riuscita.
  • result>1: errore.