Quando distribuisci la tua app su dispositivi con sistema operativo Android Automotive, devi tenere conto di alcune considerazioni specifiche del fattore di forma. Questa guida illustra queste considerazioni.
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 il 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
Tutte le app create per il sistema operativo Android Automotive devono soddisfare determinati requisiti per essere distribuite tramite Google Play. Per ulteriori informazioni, consulta la sezione Soddisfare i requisiti delle funzionalità di Google Play.
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 e passare allo stato di ciclo di vita In pausa.
Questo avviene come callback del ciclo di vita onPause()
durante il quale devi mettere in pausa la riproduzione sia video che audio della tua app.
Sui dispositivi che includono la modalità di compatibilità con il sistema operativo Android Automotive, il blocco del sistema fa sì che le attività dell'app passino dallo stato In pausa allo stato Interrotta. Per verificare che la tua app metta in pausa la riproduzione su tutti i dispositivi e non solo su quelli che supportano la modalità di compatibilità, assicurati di eseguire il test su un dispositivo che non include la modalità di compatibilità. Consulta la sezione Eseguire test utilizzando l'emulatore Android Automotive OS per informazioni sugli emulatori che includono o meno la modalità di compatibilità.
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 in auto, tieni presente quanto segue durante la creazione dell'app per il sistema operativo Android Automotive:
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 la sezione Mostrare i contenuti a schermo intero nella tua app. I valori di spaziatura hardcoded non sono mai consigliati per nessun fattore di forma, ma nelle auto probabilmente non funzioneranno per mantenere i contenuti nell'area di sicurezza.
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 la tua app viene visualizzata edge-to-edge, 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 su Android Automotive OS. Per ulteriori dettagli, consulta Google Play Services per auto.
Puoi utilizzare l'API PackageManager.hasSystemFeature
per rilevare se l'app è in esecuzione su Android Automotive OS 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.