Estendi la tua app multimediale ad Android per le auto

Porta la tua app sui veicoli che eseguono Android Auto o Android Automotive OS. Utilizza un'architettura dell'app che funzioni in entrambi i casi, in modo che ogni utente possa usufruire della tua app.

Che cos'è Android for Cars?

Un'app multimediale per auto può offrire agli utenti un modo per connettere senza problemi la propria vita digitale con la propria auto. Estendendo le stesse app per smartphone per renderle disponibili per le automobili, crei un'esperienza utente migliore. Puoi farlo integrando Android Auto o Android Automotive OS.

Le app per auto per Android devono evitare la distrazione del conducente prima di tutto. Puoi ridurre al minimo le distrazioni seguendo le best practice, ad esempio utilizzando i comandi vocali e un design visivo molto pratico. In questo modo, la tua app multimediale può mostrare informazioni tempestive al conducente solo quando sono pertinenti e utilizzare pattern prevedibili per le attività comuni.

Android Auto

Android Auto offre un'esperienza app ottimizzata per il conducente agli utenti che hanno uno smartphone Android con l'app Android Auto e un'auto o un sistema stereo aftermarket compatibili. Possono utilizzare la tua app direttamente sul display dell'auto collegando il proprio smartphone. Attivi Android Auto per connettersi all'app per smartphone creando servizi che Android Auto utilizza per mostrare un'interfaccia ottimizzata per il conducente.

Sistema operativo Android Automotive

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

Categorie di app supportate

Le app multimediali consentono agli utenti di sfogliare e riprodurre musica, radio, audiolibri e altri contenuti audio in auto. Per ulteriori informazioni, vedi Creare app di riproduzione audio per le auto. Per ulteriori informazioni, visita anche la pagina Creare app multimediali per le auto.

Le app multimediali sono create utilizzando MediaLibraryService e MediaSession. Su Android Automotive OS, puoi anche creare schermate di accesso e impostazioni (da utilizzare quando l'auto è parcheggiata) utilizzando Views o Compose.

Le app video consentono agli utenti di guardare video in streaming mentre l'auto è parcheggiata. Lo scopo principale di queste app è la visualizzazione di video in streaming. Queste app sono create utilizzando Views o Compose. Per ulteriori informazioni, consulta la pagina Creare app di riproduzione video per Android Automotive OS. Ulteriori informazioni sono disponibili alla pagina Creare app video per Android Automotive OS.

Crea app di riproduzione audio per le auto

Questa guida presuppone che tu abbia già un'app di riproduzione multimediale di base. In caso contrario, per iniziare, vai a Creare un'app di base per la riproduzione multimediale.

Questa guida fornisce informazioni su cosa devi fare, inclusi i link a ulteriori risorse con indicazioni specifiche.

Componenti di riproduzione

Media3 offre diversi componenti chiave per i casi d'uso della 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 collegano
  in diversi modi semplici grazie alla condivisione di interfacce
   e classi.
Figura 1: componenti dell'app multimediale

Per ulteriori informazioni, vedi Componenti di riproduzione.

Implementa un MediaLibraryService e un MediaLibrarySession

Un MediaLibraryService fornisce un'API standardizzata per pubblicare e consentire l'accesso alla tua raccolta degli elementi multimediali. Questo è necessario quando aggiungi il supporto di Android Auto o Android Automotive OS alla tua app multimediale, poiché queste piattaforme forniscono la propria UI sicura per il conducente per la tua raccolta multimediale. Per ulteriori informazioni sull'implementazione e l'utilizzo di un MediaLibraryService, consulta Pubblicare contenuti con MediaLibraryService.

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

Il collegamento di una sessione multimediale a un player consente a un'app di pubblicizzare la riproduzione multimediale esternamente e di ricevere comandi di riproduzione da origini esterne come Android Auto, Android Automotive OS o l'Assistente Google. Per saperne di più, vedi Controllare e pubblicizzare la riproduzione utilizzando una MediaSession e Utilizzare una MediaLibrarySession.

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

La guida Attivare i controlli di riproduzione descrive i modi in cui puoi personalizzare i controlli di riproduzione nelle auto.

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

Queste piattaforme applicano limiti aggiuntivi alla struttura della tua raccolta di contenuti. Per informazioni dettagliate su come personalizzare la visualizzazione della libreria dei contenuti, consulta la guida Creare il servizio di esplorazione dei contenuti multimediali.

Dichiarare il supporto di Android Auto

Utilizza la seguente voce del manifest per dichiarare che l'app per smartphone 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à automobilistiche supportate dalla tua app. Per indicare che hai un'app multimediale, aggiungi un file XML denominato automotive_app_desc.xml alla directory res/xml/ nel tuo progetto. Questo file deve includere i seguenti contenuti:

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

Dichiarare il supporto per Android Automotive OS

Devi creare un modulo per il settore automobilistico, perché non tutta la logica della tua app può essere condivisa con un'app per il settore automobilistico. Alcuni componenti di Android Automotive OS, come il manifest, hanno requisiti specifici per la piattaforma. Crea un modulo che possa mantenere il codice di questi componenti separato da altro codice nel tuo progetto, ad esempio il codice utilizzato per la tua app mobile.

Per aggiungere un modulo per il settore automobilistico al tuo progetto:

  1. In Android Studio, fai clic su File > Nuovo > Nuovo modulo.
  2. Seleziona Modulo per il settore automobilistico e poi fai clic su Avanti.
  3. Inserisci un nome applicazione/libreria. Questo è il nome che gli utenti vedono per la tua app su Android Automotive OS.
  4. Inserisci un Nome modulo.
  5. Modifica il nome del pacchetto in modo che corrisponda alla tua app.
  6. Seleziona API 28: Android 9.0 (Pie) per l'SDK minima e poi fai clic su Avanti.

    Tutte le auto che supportano Android Automotive OS 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à, quindi fai clic su Fine.

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

<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, nonché un elemento uses-feature che dichiara il supporto di Android Automotive OS. Tieni presente che nel manifest non sono dichiarate attività.

Se implementi impostazioni o attività di accesso, aggiungile qui. Queste attività vengono attivate dal sistema utilizzando intent espliciti e sono le uniche attività che dichiari nel manifest per la tua app Android Automotive OS.

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 Automotive OS.

Utilizza la seguente voce del manifest per dichiarare che la tua app supporta Android Automotive OS:

<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à automobilistiche 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. Includi i seguenti contenuti in questo file:

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

Filtri per intent

Android Automotive OS utilizza intent espliciti per attivare le attività nella tua app multimediale. Non includere attività che contengono filtri per 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 smartphone, non nel modulo che crea l'app Android Automotive OS.

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

Passaggi successivi

Ora che hai un'app per Android Auto e Android Automotive OS, potresti voler adottare ulteriori misure per ottimizzare l'app in modo che possa essere 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, Funzionalità di sicurezza contro le distrazioni e Gestione degli errori.

Creare app di riproduzione video per Android Automotive OS

Poiché le app video sono classificate separatamente dalle app multimediali nelle auto, devi essere a conoscenza di alcuni requisiti specifici per le app video, come descritto in Creare app per auto parcheggiate e Creare app video per Android Automotive OS. 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 tuo progetto. In questo file, includi i seguenti contenuti:

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

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

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