Oltre a supportare le app progettate per l'utilizzo alla guida, il sistema operativo Android Automotive supporta browser, giochi e app video da usare quando il veicolo è parcheggiato. Puoi inviare la stessa app alle auto come faresti con altri dispositivi con schermo di grandi dimensioni con solo alcune piccole modifiche.
Testa la tua app esistente su un emulatore Android Automotive OS
Per iniziare a creare la tua app per Android Automotive OS, prova prima la tua app esistente su un emulatore Android Automotive OS. Per configurare un emulatore, segui i passaggi descritti in Eseguire test utilizzando l'emulatore Android Automotive OS. Puoi quindi eseguire l'app seguendo le istruzioni riportate in Eseguire l'app sull'emulatore.
Quando esegui l'app, controlla la presenza di problemi di compatibilità, ad esempio:
- Gli schermi di infotainment hanno orientamenti fissi. Per rispettare le norme sulla qualità delle app per auto, le app devono supportare gli orientamenti verticale e orizzontale.
- Le API disponibili su altri dispositivi potrebbero non essere disponibili su Android Automotive OS. Ad esempio, alcune API di Google Play Services non sono disponibili su Android Automotive OS. Consulta la sezione Disattivare le funzionalità per maggiori dettagli su come gestire questi problemi.
Configura i file manifest dell'app
Per scegliere come target i dispositivi con sistema operativo Android Automotive, la tua app deve avere determinate voci del file manifest. Dopo aver attivato la distribuzione per i dispositivi con sistema operativo Android Automotive, le app compatibili vengono sottoposte a una procedura di revisione manuale per garantire che siano sicure per l'utilizzo in auto. Per ulteriori dettagli, vedi Distribuire su auto.
Funzionalità di Android Automotive OS richieste
Per essere elencate nel Play Store in un'auto, le app create per il sistema operativo Android Automotive devono includere un elemento <uses-feature>
nel file AndroidManifest.xml
per la funzionalità android.hardware.type.automotive
:
<manifest ...> ... <!-- Depending on the track you choose to distribute your app, the android:required attribute can also be "false" or left unset. See Choose a track for Android Automotive OS. --> <uses-feature android:name="android.hardware.type.automotive" android:required="[true|false]" /> ... </manifest>
Oltre all'elemento mostrato nell'esempio di codice precedente, le app create per il sistema operativo Android Automotive devono includere i seguenti elementi <uses-feature>
nell'elemento radice <manifest>
:
<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"/>
Impostare esplicitamente queste funzionalità come non obbligatorie consente di garantire che la tua app non entri in conflitto con le funzionalità hardware disponibili nei dispositivi con sistema operativo Android Automotive.
Assicurati che non ci siano attività ottimizzate per le distrazioni
Per assicurarti che la tua app sia disponibile solo per l'utilizzo quando il veicolo è parcheggiato, non
includere il seguente elemento <meta-data>
in nessun elemento
<activity>
all'interno del
manifest:
<!-- NOT ALLOWED -->
<meta-data
android:name="distractionOptimized"
android:value="true"/>
Senza questi metadati, le attività della tua app vengono bloccate automaticamente dal sistema operativo quando l'auto entra in modalità di guida per ridurre le distrazioni per il conducente. Questo avviene come callback del ciclo di vita
onPause
durante il quale devi mettere in pausa sia la riproduzione video sia quella audio
dall'app.
Voci manifest specifiche per categoria
Oltre ai requisiti precedenti, che si applicano a tutte le app non pubblicate, le categorie Video e Giochi hanno requisiti aggiuntivi:
- Per le app video, consulta Contrassegnare l'app come app video.
- Per i giochi, vedi Contrassegnare l'app come gioco.
Ottimizzare l'app per Android Automotive OS
Per offrire agli utenti la migliore esperienza possibile, tieni presente quanto segue durante la creazione dell'app per il sistema operativo Android Automotive.
Ottimizzazione per schermi di grandi dimensioni
Gli schermi presenti nei veicoli con sistema operativo Android Automotive sono più simili per dimensioni, risoluzione e proporzioni a tablet e dispositivi pieghevoli rispetto agli smartphone. Di conseguenza, l'ottimizzazione dell'app per gli schermi di grandi dimensioni è vantaggiosa anche per gli utenti in auto.
In particolare, consulta le guide Supporta schermi di dimensioni diverse e Esegui la migrazione della UI ai layout adattabili per informazioni dettagliate su come sfruttare al meglio i display di grandi dimensioni, nonché le gallerie di contenuti multimediali e giochi per trovare ispirazione e indicazioni per il design.
Altre ottimizzazioni per schermi di grandi dimensioni, come la compatibilità con gli input, non sono così vantaggiose direttamente per il sistema operativo Android Automotive, ma possono comunque migliorare l'esperienza utente. Ad esempio, la navigazione da tastiera utilizza le stesse API della navigazione con il controllo rotativo, pertanto eventuali ottimizzazioni apportate possono essere vantaggiose per entrambi i fattori di forma.
Lavorare con inserti di finestre e ritagli del display
Come per altri fattori di forma, il sistema operativo Android Automotive include elementi dell'interfaccia utente di sistema, come barre di stato e di navigazione, e il supporto per display non rettangolari.
Per impostazione predefinita, le app vengono disegnate in un'area che non si sovrappone alle barre di sistema o ai ritagli del display. Tuttavia, potresti voler nascondere le barre di sistema nell'app, disegnare contenuti dietro di esse o mostrare contenuti in un ritaglio del display come descritto in Disporre l'app all'interno degli inserti della finestra. Se la tua app esegue una di queste operazioni, consulta le seguenti sottosezioni per informazioni dettagliate su come farla funzionare correttamente nell'ecosistema dei dispositivi Android Automotive OS.
Barre di sistema, modalità immersiva e rendering edge-to-edge
Le barre di sistema nelle auto potrebbero avere dimensioni e posizionamenti diversi rispetto ad altri fattori di forma. Ad esempio, le barre di navigazione possono essere posizionate a sinistra, a destra o in basso nella schermata. Anche se è presente una barra di stato in alto e una barra di navigazione in basso (come nella maggior parte di smartphone e tablet), le dimensioni di questi elementi saranno probabilmente molto maggiori nelle auto.
Inoltre, il sistema operativo Android Automotive consente agli OEM di controllare se le app possono mostrare o nascondere le barre di sistema per entrare ed uscire dalla modalità immersiva. Ad esempio, impedendo alle app di nascondere le barre di sistema, gli OEM possono assicurarsi che i controlli del veicolo, come quelli climatici, siano sempre accessibili sullo schermo. Se un OEM ha impedito alle app di controllare le barre di sistema, non succede nulla quando un'app chiama le API WindowInsetsController
(o WindowInsetsControllerCompat
) per mostrare o nascondere le barre di sistema. Consulta la documentazione di show
e
hide
per scoprire di più su come rilevare se la tua app è riuscita a modificare gli rientramenti.
Analogamente, gli OEM possono anche controllare se le app possono impostare o meno il colore e la translucenza delle barre di sistema per assicurarsi che le barre e gli elementi al loro interno siano sempre ben visibili. Se la tua app viene visualizzata da un lato all'altro dello schermo, verifica che dietro le barre di sistema vengano visualizzati solo contenuti non critici. Questi contenuti potrebbero non essere visibili se l'OEM del dispositivo impedisce di impostare il colore o la trasparenza delle barre.
<!-- Depending on OEM configuration, these style declarations
(and the corresponding runtime calls) may be ignored -->
<style name="...">
<item name="android:statusBarColor">...</item>
<item name="android:navigationBarColor">...</item>
<item name="android:windowTranslucentStatus">...</item>
<item name="android:windowTranslucentNavigation">...</status>
</style>
Se la tua app è da un bordo all'altro, non fare supposizioni sulle dimensioni, sul numero, sul tipo o sulla posizione delle barre di sistema. Utilizza invece le API di incavo della finestra per disporre i contenuti della tua app in base alle barre di sistema. Per ulteriori dettagli su come utilizzare queste API, consulta Mostrare i contenuti a schermo intero nella tua app. I valori di spaziatura hardcoded che, anche se mai consigliati, potrebbero mantenere i contenuti nell'area sicura su altri dispositivi probabilmente non funzioneranno nelle auto.
Adattarsi a display di forma irregolare
Oltre ai display rettangolari, alcuni veicoli potrebbero avere schermi di forma irregolare, come mostrato nella Figura 1:
Se la tua app non viene visualizzata a schermo intero, non devi fare nulla per visualizzarla nell'area sicura.
Se l'app viene visualizzata a schermo intero, puoi scegliere come deve comportarsi rispetto ai ritagli del display. Puoi farlo utilizzando le risorse impostando l'attributo android:windowLayoutInDisplayCutoutMode
per il tema dell'app o in fase di esecuzione modificando l'attributo layoutInDisplayCutoutMode
della finestra.
Poiché i tipi di ritagli del display presenti sui dispositivi con sistema operativo Android Automotive sono diversi da quelli sui dispositivi mobili, non utilizzare LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
o LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES
, il cui comportamento è ottimizzato per i ritagli presenti sui dispositivi mobili. Utilizza invece LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER
o LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
per evitare sempre o inserire sempre il ritaglio. Se scegli la seconda opzione, consulta Supportare i ritagli del display per ulteriori dettagli sulle API relative ai ritagli del display.
Se la tua app viene visualizzata nell'area del ritaglio del display e vuoi avere un comportamento diverso tra il sistema operativo Android Automotive e il mobile, consulta Disattivare le funzionalità per indicazioni se la tua app imposta questo comportamento in fase di esecuzione e Utilizzare risorse alternative se la tua app imposta questo comportamento utilizzando i file di risorse.
Disattivare le funzionalità
Se rendi disponibile un'app mobile esistente su Android Automotive OS, alcune funzionalità potrebbero non essere pertinenti o disponibili. Ad esempio, le auto in genere non forniscono l'accesso alle videocamere. Inoltre, solo un insieme limitato di Google Play Services è disponibile sul sistema operativo Android Automotive. Per ulteriori dettagli, consulta Google Play Services per le auto.
Puoi utilizzare l'API PackageManager.hasSystemFeature
per rilevare se l'app è in esecuzione sul sistema operativo Android Automotive controllando la funzionalità FEATURE_AUTOMOTIVE
, come mostrato nell'esempio seguente:
Kotlin
val packageManager: PackageManager = ... // Get a PackageManager from a Context val isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
Java
PackageManager packageManager = ... // Get a PackageManager from a Context boolean isCar = packageManager.hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE) if (isCar) { // Enable or disable a given feature }
In alternativa, se la tua app ha anche un componente Android Auto, puoi utilizzare l'API CarConnection della raccolta di app Android for Cars per rilevare se l'app è in esecuzione su Android Automotive OS o Android Auto oppure se non è collegata a un'auto.
Per la modalità Picture-in-Picture (PiP), segui le best practice stabilite per verificare se la funzionalità è disponibile e reagisci di conseguenza.
Gestire gli scenari offline
Anche se le auto sono sempre più connesse a internet, è consigliabile che le app gestiscano l'esecuzione senza una connessione a internet, ad esempio nei seguenti casi:
- Gli utenti potrebbero disattivare i dati mobili offerti nell'ambito di un pacchetto di abbonamento del produttore di auto.
- L'accesso ai dati mobili potrebbe essere limitato in alcune aree.
- Le auto con radio Wi-Fi potrebbero non essere coperte dal segnale Wi-Fi oppure un OEM potrebbe disattivare il Wi-Fi a favore di una rete mobile.
Preparati a gestire questi scenari nella tua app con un degradamento graduale della funzionalità che dipende dall'accesso a internet, ad esempio offrendo contenuti offline. Per saperne di più, consulta le best practice per l'ottimizzazione della rete.
Utilizzare risorse alternative
Per adattare la tua app alle auto, puoi utilizzare il qualificatore della risorsa car
per fornire risorse alternative quando l'app viene eseguita su un veicolo con sistema operativo Android Automotive. Ad esempio, se utilizzi
risorse dimensione per memorizzare
valori di spaziatura interna, puoi utilizzare un valore più elevato per il set di risorse car
per aumentare
gli obiettivi di contatto.
Distribuire l'app
Dopo aver testato la tua app in base alle norme sulla qualità delle app per auto per la relativa categoria, puoi usarla su Google Play per distribuirla ad Auto con Google integrato. Per ulteriori dettagli sulla procedura di pubblicazione, consulta Distribuire su auto.
Fornire feedback sulle app inutilizzate
Se riscontri un problema o hai una richiesta di funzionalità durante lo sviluppo della tua app per auto parcheggiata per il sistema operativo Android Automotive, puoi segnalarla utilizzando il tracker dei problemi di Google. Assicurati di compilare tutte le informazioni richieste nel modello del problema. Prima di segnalare un nuovo problema, controlla se è già stato segnalato nell'elenco dei problemi. Puoi registrarti e votare per i problemi facendo clic sulla stella accanto al problema nel tracker. Per ulteriori informazioni, consulta la sezione Iscriversi a un problema.