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 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 loro vita digitale con le loro auto. Estendendo le stesse app per smartphone in modo che siano disponibili per le auto, crei un'esperienza utente migliore. Puoi farlo tramite l'integrazione con Android Auto o Android Automotive OS.
Le app per Android per auto devono evitare soprattutto la distrazione del conducente. 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, l'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 con l'app ottimizzata per il conducente per gli utenti che hanno uno smartphone Android con l'app Android Auto e un'auto o un impianto stereo aftermarket compatibile. Possono utilizzare la tua app direttamente sul display dell'auto collegando lo smartphone. Puoi attivare Android Auto per connetterti alla tua app Telefono creando servizi che Android Auto utilizza per mostrare al conducente un'interfaccia ottimizzata per la guida.
Android Automotive OS
Android Automotive OS è un sistema di infotainment basato su Android integrato nei veicoli. Il sistema dell'auto è un dispositivo Android autonomo ottimizzato per la guida. Con Android Automotive OS, gli utenti installano la tua app direttamente sull'auto anziché sullo 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 saperne di più, consulta Crea app di riproduzione audio per auto e Crea app multimediali per auto.
Le app multimediali vengono create utilizzando MediaLibraryService
e MediaSession.
Su Android Automotive OS, puoi anche creare schermate di accesso e impostazioni (da utilizzare quando il veicolo è parcheggiato) 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 è mostrare video in streaming. Queste app sono create utilizzando Views o Compose. Per ulteriori informazioni, consulta Crea app di riproduzione video per Android Automotive OS e Crea 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. Se non lo hai, per iniziare, vai a Crea un'app di base per il media player.
Questa guida fornisce informazioni su ciò che devi fare, inclusi i link a ulteriori 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 saranno familiari se hai lavorato con le raccolte multimediali Android precedenti.
Il seguente diagramma mostra come questi componenti si uniscono in un'app tipica.
Per ulteriori informazioni, consulta Componenti di riproduzione.
Implementa MediaLibraryService e MediaLibrarySession
Un MediaLibraryService
fornisce un'API standardizzata per pubblicare e consentire l'accesso alla tua 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 saperne di più sull'implementazione e sull'utilizzo di un MediaLibraryService, consulta Pubblica contenuti con MediaLibraryService.
Per i controlli di riproduzione, utilizza una sessione multimediale. L'API MediaSession fornisce un modo universale di interagire con un video player o un lettore audio. La libreria Jetpack Media3 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 esternamente e di ricevere comandi di riproduzione da fonti esterne come Android Auto, Android Automotive OS o l'Assistente Google. Per saperne di più, consulta Controlla e annuncia la riproduzione utilizzando una MediaSession e Utilizza una MediaLibrarySession.
Come minimo, la sessione multimediale deve dichiarare il supporto dei seguenti comandi del player:
La guida Attiva 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 libreria. 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 sulla personalizzazione della visualizzazione della libreria di contenuti, consulta la guida Crea il tuo servizio di browser multimediale.
Dichiara il supporto di Android Auto
Utilizza la seguente voce del manifest per dichiarare che la tua 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 file manifest fa riferimento a un file XML che dichiara le funzionalità per auto 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 di Android Automotive OS
Devi creare un modulo automotive perché non tutta la logica della tua app può essere condivisa con un'app per auto. Alcuni componenti di Android Automotive OS, come il manifest, hanno requisiti specifici della piattaforma. Crea un modulo che possa mantenere il codice di questi componenti separato da altro codice del progetto, ad esempio il codice utilizzato per l'app mobile.
Segui questi passaggi per aggiungere un modulo automotive al tuo progetto:
- In Android Studio, fai clic su File > Nuovo > Nuovo modulo.
- Seleziona Modulo automotive, quindi fai clic su Avanti.
- Inserisci un nome per l'applicazione/libreria. Questo è il nome che gli utenti vedono per la tua app su Android Automotive OS.
- Inserisci un Nome modulo.
- Modifica il Nome pacchetto in modo che corrisponda alla tua app.
Seleziona API 28: Android 9.0 (Pie) per SDK minimo, quindi 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.
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 di Android Automotive OS.
Tieni presente che nel file manifest non sono dichiarate attività.
Se implementi attività di impostazioni o di accesso, aggiungile qui. Queste attività vengono attivate dal sistema utilizzando intent espliciti e sono le uniche attività che dichiari nel manifest della 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 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 file manifest fa riferimento a un file XML che dichiara le funzionalità per le auto 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à con 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 Activity nel modulo che crea l'app Telefono, non nel modulo che crea 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 voler eseguire ulteriori passaggi per ottimizzarla in modo che possa essere utilizzata in modo più sicuro durante la guida. Per ulteriori consigli su come garantire un'esperienza utente sicura e comoda, consulta le guide tecniche per le azioni vocali, le misure di protezione dalle distrazioni e la gestione degli errori.
Crea app di riproduzione video per Android Automotive OS
Poiché le app video sono classificate separatamente dalle app multimediali per auto, devi conoscere alcuni requisiti specifici per le app video, come descritto in Crea app per auto parcheggiata e Crea app video per Android Automotive OS. Segui queste istruzioni:
Contrassegna la tua app come app video
Per indicare che la tua app supporta i video, aggiungi l'attributo android:appCategory="video" all'elemento <application> del manifest.
<manifest ...>
...
<application
...
android:appCategory="video">
...
</application>
</manifest>
Dichiara la funzionalità hardware di Android Automotive OS
Per dichiarare che la tua app supporta i dispositivi Android Automotive OS, aggiungi l'elemento android.hardware.type.automotive <uses-feature> al manifest.
Consulta
Dichiara la funzionalità hardware dell'AAOS
per indicazioni su come impostare l'attributo android:required su "false" o
"true".
<manifest ...>
...
<uses-feature android:name="android.hardware.type.automotive" ...>
...
</manifest>