Estendi la tua app multimediale ad Android per le auto

Porta la tua app sui veicoli con sistema operativo Android Auto o Android Automotive. Utilizza un'unica architettura dell'app che funzioni per entrambi i casi in modo che ogni utente possa apprezzare la tua app.

Che cos'è Android per le auto?

Un'app multimediale per auto può offrire agli utenti un modo per connettere perfettamente la loro vita digitale alle auto. Se estendi le stesse app per rendere disponibile il telefono per le automobili, crei un'esperienza utente migliore. Puoi farlo integrando il sistema operativo Android Auto o Android Automotive.

Le app per Android per le auto devono evitare le distrazioni alla guida. Puoi ridurre al minimo le distrazioni seguendo le best practice, ad esempio l'utilizzo dei comandi vocali e un design visivo molto pratico. In questo modo, l'app multimediale può mostrare informazioni tempestive al conducente solo quando è pertinente e utilizzare pattern prevedibili per le attività comuni.

Android Auto

Android Auto offre un'esperienza con l'app ottimizzata per il conducente per gli utenti che dispongono di uno smartphone Android con l'app Android Auto e di un sistema stereo per auto o aftermarket compatibile. Può usare la tua app direttamente sul display dell'auto collegando il telefono. Puoi consentire ad Android Auto di connettersi all'app del tuo telefono creando servizi che Android Auto utilizza per mostrare al conducente un'interfaccia ottimizzata per il conducente.

Sistema operativo Android Automotive

Il sistema operativo Android Automotive è un sistema di infotainment basato su Android integrato nei veicoli. Il sistema dell'auto è un dispositivo Android autonomo ottimizzato per la guida. Con il sistema operativo Android Automotive, gli utenti installano l'app direttamente sull'auto anziché sul telefono.

Categorie di app supportate

Le app multimediali consentono agli utenti di sfogliare e riprodurre musica, radio, audiolibri e altri contenuti audio in auto. Per maggiori informazioni, consulta Creare app di riproduzione audio per le auto. Ulteriori informazioni sono disponibili anche nella pagina Creare app multimediali per le auto.

Le app multimediali sono create utilizzando MediaLibraryService e MediaSession. Sul sistema operativo Android Automotive, puoi anche creare schermate di accesso e impostazioni (da utilizzare quando parcheggia) utilizzando Visualizzazioni o Compose.

Le app video consentono agli utenti di visualizzare video in streaming mentre l'auto è parcheggiata. Lo scopo principale di queste app è visualizzare video in streaming. Queste app vengono create utilizzando View o Compose. Per maggiori informazioni, consulta la pagina Creare app per la riproduzione di video per il sistema operativo Android Automotive. Ulteriori informazioni sono disponibili nella pagina Creare app video per il sistema operativo Android Automotive.

Creare app di riproduzione audio per le auto

Questa guida presuppone che tu abbia già un'app per la riproduzione di contenuti multimediali di base. In caso contrario, per iniziare, consulta Creare un'app per un media player di base.

Questa guida fornisce informazioni su ciò che devi fare, inclusi link ad altre risorse con indicazioni specifiche.

Componenti di riproduzione

Media3 offre diversi componenti chiave per i casi d'uso relativi alla riproduzione. Le classi che compongono questi componenti ti sono familiari se hai lavorato con le precedenti librerie multimediali di Android.

Il seguente diagramma mostra come questi componenti si combinano in un'app tipica.

I diversi componenti di un'app multimediale che utilizza Media3 si connettono in vari modi semplici grazie alla condivisione di interfacce e classi.
Figura 1: componenti dell'app multimediale

Per ulteriori informazioni, consulta la sezione Componenti di riproduzione.

Implementa un MediaLibraryService e un MediaLibrarySession

Un elemento MediaLibraryService fornisce un'API standardizzata per pubblicare e consentire l'accesso alla tua libreria multimediale. Questa verifica è necessaria quando aggiungi il supporto per Android Auto o il sistema operativo Android Automotive alla tua app multimediale, poiché queste piattaforme forniscono la propria UI sicura per il conducente per la tua raccolta multimediale. Per maggiori informazioni sull'implementazione e sull'utilizzo di un elemento MediaLibraryService, consulta Pubblicare contenuti con MediaLibraryService.

Per i controlli di riproduzione, utilizza una sessione multimediale. L'API MediaSession offre un modo universale di interagire con un audio o video player. La libreria Jetpack Media3 include MediaLibrarySession, che estende MediaSession per aggiungere API per la navigazione di contenuti.

La connessione di una sessione multimediale a un player consente a un'app di pubblicizzare la riproduzione di contenuti multimediali esternamente e di ricevere comandi di riproduzione da sorgenti esterne come Android Auto, il sistema operativo Android Automotive o l'Assistente Google. Per ulteriori informazioni, consulta Controllare e pubblicizzare la riproduzione con MediaSession e Utilizzare una MediaLibrarySession.

Come minimo, la tua sessione multimediale deve dichiarare il supporto per i seguenti comandi del player:

La guida Attiva i controlli di riproduzione descrive le modalità di personalizzazione dei controlli di riproduzione nelle auto.

Quando Android Auto o il sistema operativo Android Automotive si connettono alla tua app, richiedono una raccolta di contenuti da visualizzare, che attiva il metodo di callback onGetLibraryRoot(). Puoi restituire rapidamente un elemento multimediale root per consentire l'accesso alla tua libreria. Il metodo di callback onGetChildren() viene richiamato quando Android Auto o il sistema operativo Android Automotive tentano di esplorare livelli più approfonditi della tua raccolta di contenuti.

Queste piattaforme applicano limiti aggiuntivi su come è strutturata la raccolta di contenuti. Per maggiori dettagli sulla personalizzazione della modalità di visualizzazione della raccolta di contenuti, consulta la guida Creare un servizio browser multimediale.

Dichiara il supporto per Android Auto

Usa la seguente voce del file manifest per dichiarare che l'app Telefono supporta Android Auto:

<application>
    ...
    <meta-data android:name="com.google.android.gms.car.application"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Questa voce del manifest fa riferimento a un file XML che dichiara le funzionalità relative ad auto e motori supportate dalla tua app. Per indicare che hai un'app multimediale, aggiungi un file XML denominato automotive_app_desc.xml alla directory res/xml/ del tuo progetto. Questo file deve includere i seguenti contenuti:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Dichiara il supporto del sistema operativo Android Automotive

Devi creare un modulo Auto e motori perché non tutta la logica nella tua app può essere condivisa con quest'ultima. Alcuni componenti del sistema operativo Android Automotive, ad esempio il manifest, hanno requisiti specifici della piattaforma. Crea un modulo che possa mantenere il codice di questi componenti separato da altri codici nel progetto, ad esempio il codice utilizzato per la tua app mobile.

Per aggiungere un modulo relativo ad auto e motori al tuo progetto, segui questi passaggi:

  1. In Android Studio, fai clic su File > Nuovo > Nuovo modulo.
  2. Seleziona Modulo auto, poi fai clic su Avanti.
  3. Inserisci un Nome applicazione/libreria. Questo è il nome della tua app che gli utenti vedranno per il sistema operativo Android Automotive.
  4. Inserisci un Nome modulo.
  5. Modifica il Nome del pacchetto in modo che corrisponda a quello dell'app.
  6. Seleziona API 28: Android 9.0 (Pie) per SDK minimo, quindi fai clic su Avanti.

    Tutte le auto che supportano il sistema operativo Android Automotive eseguono Android 9 (livello API 28) o versioni successive, quindi la selezione di questo valore ha come target tutte le auto compatibili.

  7. Seleziona Nessuna attività e fai clic su Fine.

Dopo aver creato il modulo in Android Studio, apri AndroidManifest.xml nel nuovo modulo Automotive:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

</manifest>

L'elemento application contiene alcune informazioni standard sull'app e un elemento uses-feature che dichiara il supporto del sistema operativo Android Automotive. Tieni presente che non ci sono attività dichiarate nel manifest.

Se implementi impostazioni o attività di accesso, aggiungile qui. Queste attività vengono attivate dal sistema utilizzando intent espliciti e sono le uniche attività dichiarate nel file manifest per l'app del sistema operativo Android Automotive.

Dopo aver aggiunto impostazioni o attività di accesso, completa il file manifest impostando l'attributo android:appCategory="audio" nell'elemento application e aggiungendo i seguenti elementi uses-feature:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.media">

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme" />

    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <uses-feature
        android:name="android.hardware.wifi"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.portrait"
        android:required="false" />
    <uses-feature
        android:name="android.hardware.screen.landscape"
        android:required="false" />

</manifest>

L'impostazione esplicita di queste funzionalità su required="false" garantisce che la tua app non entri in conflitto con le funzionalità hardware disponibili nei dispositivi OS Automotive.

Usa la seguente voce del manifest per dichiarare che la tua app supporta il sistema operativo Android Automotive:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Questa voce del manifest fa riferimento a un file XML che dichiara le funzionalità del settore auto e motori supportate dalla tua app.

Per indicare che hai un'app multimediale, aggiungi un file XML denominato automotive_app_desc.xml alla directory res/xml/ del progetto. Includi nel file i seguenti contenuti:

<automotiveApp>
    <uses name="media"/>
</automotiveApp>

Filtri per intent

Il sistema operativo Android Automotive utilizza intent espliciti per attivare attività nella tua app multimediale. Non includere attività che hanno filtri di intent CATEGORY_LAUNCHER o ACTION_MAIN nel file manifest.

Attività come quella nell'esempio seguente di solito hanno come target un telefono o un altro dispositivo mobile. Dichiara queste attività nel modulo che crea l'app per telefono, non nel modulo che crea l'app per il sistema operativo Android Automotive.

<activity android:name=".MyActivity">
<intent-filter>
<!-- You can't use either of these intents for Android Automotive OS -->
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<!--
In their place, you can include other intent filters for any activities
that your app needs for Android Automotive OS, such as settings or
sign-in activities.
-->
</intent-filter>
</activity>

Ulteriori passaggi

Ora che hai un'app per Android Auto e per il sistema operativo Android Automotive, potresti voler svolgere passaggi aggiuntivi per ottimizzare l'app in modo che sia utilizzata in modo più sicuro durante la guida. Per altri consigli su come garantire un'esperienza utente sicura e comoda, consulta le guide tecniche per Azioni vocali, Misure protettive per la distrazione e Gestione degli errori.

Creare app per la riproduzione di video per il sistema operativo Android Automotive

Poiché le app video sono classificate separatamente dalle app multimediali delle auto, devi essere a conoscenza di alcuni requisiti specifici per le app video, come descritto in Creare app parcheggiate per il sistema operativo Android Automotive e Creare app video per il sistema operativo Android Automotive. Devi seguire le istruzioni riportate di seguito.

Contrassegnare l'app come app video

Per indicare che la tua app supporta i video, aggiungi un file XML denominato automotive_app_desc.xml alla directory res/xml/ del progetto. In questo file, includi i seguenti contenuti:

<automotiveApp>
    <uses name="video"/>
</automotiveApp>

Quindi, all'interno dell'elemento application del manifest, aggiungi il seguente elemento meta-data che faccia riferimento al file XML:

<meta-data android:name="com.android.automotive"
    android:resource="@xml/automotive_app_desc"/>