Estendi la tua app multimediale ad Android per le auto

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

Che cos'è Android for Cars?

Un'app multimediale per auto può offrire agli utenti un modo per collegare la propria vita digitale alle proprie auto. Se estendi le stesse app per smartphone in modo che siano disponibili per le auto, crei un'esperienza utente migliore. Puoi farlo integrandoti con Android Auto o Android Automotive OS.

Le app per Android per auto devono evitare di distrarre il conducente. Puoi ridurre al minimo le distrazioni seguendo best practice come l'utilizzo di comandi vocali e un design visivo molto pratico. In questo modo, l'app multimediale può mostrare al conducente informazioni tempestive solo quando sono pertinenti e utilizzare pattern prevedibili per le attività comuni.

Android Auto

Android Auto offre un'esperienza con le app ottimizzata per il conducente per gli utenti che hanno uno smartphone Android con l'app Android Auto e un impianto stereo aftermarket o dell'auto compatibile. Possono usare la tua app direttamente sul display dell'auto collegando il loro telefono. Consenti ad Android Auto di connettersi all'app del telefono creando servizi che Android Auto utilizza per mostrare al conducente 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 il sistema operativo Android Automotive, gli utenti installano la tua app direttamente nell'auto anziché sui loro telefoni.

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, consulta Creare app di riproduzione audio per le auto. Inoltre, sono disponibili ulteriori informazioni nella pagina Creare app multimediali per le auto.

Le app multimediali vengono create utilizzando MediaLibraryService e MediaSession. Sul sistema operativo Android Automotive, puoi anche creare schermate di accesso e impostazioni (da utilizzare quando il veicolo è parcheggiato) utilizzando Visualizzazioni o Scrittura.

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 vengono create utilizzando Visualizzazioni o Scrivi. Per ulteriori informazioni, consulta Creare app di riproduzione video per il sistema operativo Android Automotive. Ulteriori informazioni sono disponibili nella pagina Creare app video per il sistema operativo Android Automotive.

Crea app di riproduzione audio per le auto

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

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

Componenti di riproduzione

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

Il seguente diagramma mostra come questi componenti vengono uniti in un'app tipica.

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

Per maggiori informazioni, consulta la sezione Componenti di riproduzione.

Implementare un MediaLibraryService e un MediaLibrarySession

Un MediaLibraryService fornisce un'API standardizzata per pubblicare e consentire l'accesso alla raccolta multimediale. 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 sull'utilizzo di un MediaLibraryService, consulta Pubblicare contenuti con MediaLibraryService.

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

La connessione di una sessione multimediale a un player consente a un'app di pubblicizzare la riproduzione di contenuti multimediali all'esterno e di ricevere comandi di riproduzione da origini esterne come Android Auto, il sistema operativo Android Automotive o l'Assistente Google. Per ulteriori informazioni, consulta 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 media player:

La guida Attivare i controlli di riproduzione descrive i modi per personalizzare i controlli di riproduzione in auto.

Quando Android Auto o il sistema operativo Android Automotive si connettono alla tua app, richiedono di visualizzare una raccolta di contenuti, che attiva il metodo di callback onGetLibraryRoot(). Puoi restituire rapidamente un elemento multimediale root 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 raccolta di contenuti.

Queste piattaforme applicano limiti aggiuntivi alla struttura della raccolta di contenuti. Per informazioni dettagliate sulla personalizzazione della visualizzazione della raccolta di contenuti, consulta la guida Creare il servizio di browser multimediale.

Dichiarare il supporto di Android Auto

Utilizza la seguente voce manifest per dichiarare che la tua 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 file manifest fa riferimento a un file XML che dichiara le funzionalità per 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/ nel tuo progetto. Questo file deve includere i seguenti contenuti:

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

Dichiarare il supporto di Android Automotive OS

Devi creare un modulo per auto e motori perché non tutta la logica della tua app può essere condivisa con un'app per auto e motori. Alcuni componenti del sistema operativo Android Automotive, come il manifest, hanno requisiti specifici della piattaforma. Crea un modulo che possa mantenere il codice di questi componenti separato dall'altro codice del progetto, ad esempio il codice utilizzato per l'app mobile.

Per aggiungere un modulo per auto e motori al progetto:

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

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

  7. Seleziona Nessuna attività e poi 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, nonché un elemento uses-feature che dichiara il supporto per il sistema operativo Android Automotive. Tieni presente che nel file manifest non sono dichiarate attività.

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

Dopo aver aggiunto le impostazioni o le 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 con sistema operativo Automotive.

Utilizza la seguente voce 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 file manifest fa riferimento a un file XML che dichiara le funzionalità per i veicoli 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 attività nella tua app multimediale. Non includere attività con filtri per intent CATEGORY_LAUNCHER o ACTION_MAIN nel file manifest.

In genere, attività come quella nell'esempio seguente hanno come target uno smartphone o un altro dispositivo mobile. Dichiara queste attività nel modulo che compila l'app per smartphone, non nel modulo che compila l'app per 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>

Ulteriori passaggi

Ora che hai un'app per Android Auto e Android Automotive OS, potresti adottare ulteriori passaggi per ottimizzare l'app in modo che possa essere usata in modo più sicuro durante la guida. Per ulteriori consigli su come garantire un'esperienza utente sicura e pratica, consulta le guide tecniche relative alle azioni vocali, alle misure di protezione dalla distrazione e alla gestione degli errori.

Creare app di riproduzione video per il sistema operativo Android Automotive

Poiché le app video sono classificate separatamente dalle app multimediali nelle auto, devi tenere a conoscenza di alcuni requisiti specifici per le app video, come descritto negli articoli Creare app parcheggiate per il sistema operativo Android Automotive e Creare app video per Android Automotive OS. Devi utilizzare le seguenti istruzioni.

Contrassegnare l'app come app video

Per indicare che la tua app supporta i video, aggiungi un file XML denominatoautomotive_app_desc.xml alla directory res/xml/ del 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"/>