Oltre a supportare le app create per l'utilizzo alla guida, il sistema operativo Android Automotive supporta browser, giochi e app video da usare quando il veicolo è parcheggiato. Puoi spedire alle auto la stessa app che fai ad altre dispositivi con schermi di grandi dimensioni con poche modifiche.
Testa la tua app esistente su un emulatore Android Automotive OS
Per iniziare a creare la tua app per Android Automotive OS, testa innanzitutto la tua app su un emulatore di Android Automotive OS. Per configurare un emulatore, segui le passaggi descritti in Eseguire test con l'emulatore del sistema operativo Android Automotive. 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 . Ad esempio, alcune API Google Play Services non sono disponibili su Android Sistema operativo Automotive. Consulta la sezione Disattivazione delle funzionalità per informazioni dettagliate su come gestire questi problemi.
Configura i file manifest dell'app
Per avere come target Android Automotive OS, la tua app deve avere determinate voci manifest. Con questi, le app che hanno come target il sistema operativo Android Automotive vengono inviate al Play Store utilizzando un tipo di release del sistema operativo Automotive separato. Vengono sottoposti tramite una procedura di revisione manuale per garantirne la sicurezza per l'uso in auto. Per maggiori dettagli, consulta Distribuire app per Android per le 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 il seguente elemento <uses-feature>
nel file AndroidManifest.xml
:
<manifest ...>
...
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
...
</manifest>
Le app inviate ai canali non relativi ai veicoli non possono dichiarare l'elemento <uses-feature>
mostrato nell'esempio di codice precedente, perché non possono dipendere da hardware specifico per auto. Pertanto, per distribuire la stessa app sia per i dispositivi automotive sia per quelli non automotive, devi generare almeno due versioni dell'app: una per i dispositivi automotive e un'altra per i dispositivi mobili. Per ulteriori informazioni su come creare questi sguardi distinti, consulta la seguente documentazione:
Le due versioni dell'app possono condividere lo stesso nome del pacchetto, ma devono avere codici versione diversi poiché vengono caricate nei canali del Play Store distintamente.
In alternativa, invece di utilizzare gusti diversi, puoi usare pacchetti separati i nomi degli APK o degli app bundle per dispositivi mobili e auto e motori. Per comprendere le i compromessi di ciascun approccio, fai riferimento Nomi dei pacchetti nella guida per gli sviluppatori di app multimediali.
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à su "Non obbligatorie" aiuta a garantire che la tua app non è in conflitto con 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 la riproduzione audio
dall'app.
Voci manifest specifiche per categoria
Oltre ai requisiti precedenti, validi per tutte le app parcheggiate, le categorie di video e giochi hanno requisiti aggiuntivi:
- Per le app video, vedi Contrassegnare le app come app video.
- Per i giochi, vedi Contrassegnare l'app come gioco.
Ottimizza la tua app per Android Automotive OS
Per offrire agli utenti la migliore esperienza possibile, mantieni quanto segue durante la creazione dell'app per Android Automotive OS.
Ottimizzazione per schermi di grandi dimensioni
Gli schermi dei veicoli con Android Automotive OS hanno dimensioni più simili, e proporzioni per tablet e 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 la sezione Supporto dimensioni ed Esegui la migrazione dalla UI ai layout adattabili guide per dettagli su come sfruttare al meglio le grandi dimensioni dei display, nonché le contenuti multimediali e giochi per trovare ispirazione e indicazioni sul 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 le barre di stato e di navigazione, e il supporto per i 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 posizione diverse rispetto ad altri fattori di forma. Ad esempio, puoi posizionare le barre di navigazione a sinistra a destra o in basso sullo schermo. Anche nel caso in cui sia presente una barra di stato e una barra di navigazione in basso (come accade con la maggior parte dei telefoni 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.
Allo stesso modo, gli OEM possono anche decidere se le app possono impostare il colore traslucenza delle barre di sistema per garantire che le barre e gli elementi contengano siano chiaramente visibili in ogni momento. 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 traslucenza 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 va a livello perimetrale, non fare ipotesi sulle dimensioni, tipo o posizione delle barre di sistema. Utilizza invece le API di inserti 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. Valori di spaziatura interna hardcoded che, non sono consigliati, potrebbero mantenere i contenuti nell'area sicura su altri dispositivi non 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 di sicurezza.
Se la tua app esegue il rendering edge-to-edge, puoi scegliere come
comportarsi in modo rispetto ai ritagli del display. Puoi farlo usando le risorse
impostando il parametro
android:windowLayoutInDisplayCutoutMode
attributo per il tema della tua app o in fase di runtime
modificando il valore-chiave
layoutInDisplayCutoutMode
.
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 quest'ultima opzione, consulta Supportare i ritagli del display per ulteriori dettagli sulle API relative ai ritagli del display.
Se l'app viene visualizzata nell'area di ritaglio display e vuoi visualizzare un comportamento diverso tra Android Automotive OS e dispositivi mobili, vedi Se la tua app imposta questa opzione, disattiva le funzionalità per ricevere indicazioni. il comportamento degli utenti in fase di runtime e utilizza risorse alternative imposta questo comportamento tramite i file di risorse.
Disattiva funzionalità
Se vuoi rendere disponibile un'app mobile esistente su Android Automotive OS, alcune caratteristiche e funzionalità potrebbero non essere pertinenti o non 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 la PackageManager.hasSystemFeature
API per rilevare se l'app è in esecuzione sul sistema operativo Android Automotive controllando
per
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 Picture in picture (PIP), segui le istruzioni best practice per verificare se sia disponibile e reagisca in modo appropriato.
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 abbonamento della casa automobilistica.
- L'accesso ai dati mobili potrebbe essere limitato in determinate aree.
- Le auto dotate di radio Wi-Fi potrebbero essere fuori dal raggio d'azione del Wi-Fi oppure un OEM potrebbe disattivare il Wi-Fi in 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 ulteriori informazioni, consulta le best practice per l'ottimizzazione networking.
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 l'app in base alle norme sulla qualità delle app per auto relative ai suoi categoria e una build del sistema operativo Android Automotive con le eventuali modifiche necessarie , puoi quindi pubblicarlo nei canali dei fattori di forma del sistema operativo Automotive nella Play Store. Vedi Distribuire app per Android per le auto per ulteriori dettagli sulla procedura di pubblicazione.
Inviare feedback sulle app parcheggiate
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 di problema. Prima di segnalare un nuovo problema, controlla se è già stato segnalato nell'elenco dei problemi. Tu può iscriversi e votare per i problemi facendo clic sulla stella relativa a un problema in il tracker. Per ulteriori informazioni, vedi Abbonarsi a un problema.