Crea app parcheggiate per il sistema operativo Android Automotive

Oltre al supporto delle app create per essere usate durante la guida, Android Automotive Il sistema operativo supporta i browser, giochi e video App da utilizzare mentre l'auto è parcheggiata. Puoi spedire alle auto la stessa app che fai ad altre dispositivi con schermi di grandi dimensioni con poche piccole modifiche.

Testa la tua app esistente su un emulatore di 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. A questo punto puoi eseguire l'app seguendo le istruzioni riportate in Esegui l'app sull'emulatore.

Quando esegui la tua app, controlla che non ci siano problemi di compatibilità, ad esempio seguenti:

  • Gli schermi di infotainment hanno orientamenti fissi. Per rispettare auto norme sulla qualità delle app, le app devono supportare sia immagini verticali sia orizzontali orientamenti.
  • 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 Automotive OS. Consulta la sezione Disattivazione delle funzionalità per informazioni dettagliate su come gestire questi problemi.

Configurare 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 a sul Play Store usando un tipo di release separato per Automotive OS. Vengono sottoposti tramite una procedura di revisione manuale per garantirne la sicurezza per l'uso in auto. Vedi Distribuire app per Android per le auto per ulteriori informazioni. i dettagli.

Funzionalità richieste per Android Automotive OS

Da inserire nell'elenco nel Play Store di un'auto, app create per il sistema operativo Android Automotive deve includere i seguenti elementi <uses-feature> in AndroidManifest.xml file:

<manifest ...>
    ...
    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />
    ...
</manifest>

Le app inviate a canali non automobilistici non possono dichiarare <uses-feature> mostrato nell'esempio di codice precedente, in quanto non possono dipendere specifico per l'auto. Quindi, per offrire la stessa app sia per il settore automobilistico per i dispositivi non automobilistici, devi generare almeno due versioni della tua app: una per i dispositivi automobilistici e un'altra per i dispositivi mobili. Per ulteriori informazioni su come creare versioni separate, consulta la seguente documentazione:

Le due versioni dell'app possono condividere lo stesso nome di pacchetto, ma devono avere codici di versione diversi poiché vengono caricati nei canali del Play Store separatamente.

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 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 Il sistema operativo Android Automotive deve includere i seguenti elementi <uses-feature> in l'elemento principale <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 l'app sia disponibile solo quando l'app è parcheggiata, non includi il seguente elemento <meta-data> in qualsiasi <activity> all'interno di 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à Auto, per ridurre le distrazioni per le conducente. Ciò avviene come onPause callback del ciclo di vita, durante il quale devi mettere in pausa la riproduzione sia video che audio dalla tua 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:

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.

Ottimizza 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, ottimizzare l'app per gli schermi di grandi dimensioni è un vantaggio anche per gli utenti delle 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 dello schermo di grandi dimensioni, ad esempio l'input compatibilità non sono così utili per Android Automotive OS, ma possono comunque migliorare l'esperienza utente. Ad esempio, la navigazione da tastiera utilizza la classe stesse API della navigazione rotatoria, in modo che le ottimizzazioni apportate possano avvantaggiare entrambi i fattori di forma.

Utilizzare riquadri di finestre e ritagli del display

Come per altri fattori di forma, Android Automotive OS include l'interfaccia utente di sistema come le barre di stato e di navigazione, nonché il supporto di vengono visualizzati i video.

Per impostazione predefinita, le app tracciano in un'area che non si sovrappone alle barre di sistema. o ritagli del display. Tuttavia, potresti voler nascondere le barre di sistema disegna contenuti dietro di essi o mostra i contenuti in un ritaglio display come descritto in Organizzare l'app all'interno di riquadri di finestre. Se la tua app esegue una di queste, consulta le seguenti sottosezioni per informazioni dettagliate come far funzionare bene la tua app nell'ecosistema di Android Automotive OS dispositivi mobili.

Barre di sistema, modalità immersiva e rendering edge-to-edge

Le barre di sistema nelle auto possono avere dimensioni e posizioni diverse rispetto ad altre e i 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, Android Automotive OS consente agli OEM di decidere se le app possono mostrare o nascondere le barre di sistema per attivare e uscire dalla modalità immersiva . Ad esempio, impedendo alle app di nascondendo le barre del sistema, gli OEM possono garantire che i controlli del veicolo, come il clima sono sempre accessibili sullo schermo. Se un OEM ha impedito alle app controllando le barre di sistema, non succede nulla quando un'app chiama WindowInsetsController (o WindowInsetsControllerCompat) API per mostrare o nascondere le barre di sistema. Fai riferimento alla documentazione di show e hide per scoprire di più su come rilevare se la tua app è stata in grado di modificare il riquadri.

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 disegna edge-to-edge, controlla che dietro le barre di sistema vengano tracciati solo i 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. Usa invece le API che inseriscono la finestra per i contenuti dell'app rispetto alle barre di sistema. Consulta Visualizza i contenuti in modo edge-to-edge nell'app per maggiori dettagli su come utilizzare queste API. Valori di spaziatura interna hardcoded che, non sono consigliati, potrebbero mantenere i contenuti nell'area sicura su altri dispositivi non nelle auto.

Adattarsi a schermi di forma irregolare

Oltre agli schermi rettangolari, alcuni veicoli possono avere forme irregolari schermate, come mostrato nella Figura 1:

Un diagramma di un dispositivo con sistema operativo Android Automotive con un display
      curvato sul lato destro.
. Figura 1: un dispositivo con sistema operativo Android Automotive con un display curvato sul lato destro. L'area verde è il rettangolo di sicurezza che non che si sovrappongono al riquadro di delimitazione del ritaglio display della curva.

Se la tua app non esegue il rendering edge-to-edge, non devi fare nulla per eseguire il rendering nell'area sicura.

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 diverse da quelle dei dispositivi mobili, non utilizzare LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT o LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES, che hanno un comportamento ottimizzato per i ritagli che si trovano sui dispositivi mobili. Invece, usa LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER oppure LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS da evitare sempre o inserire sempre il ritaglio. Quando scegli la seconda opzione, consulta Supporto di ritagli display per ulteriori informazioni e informazioni dettagliate 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. Per Ad esempio, le auto generalmente non consentono l'accesso alle telecamere. Inoltre, solo un un sottoinsieme di Google Play Services disponibile su Android Automotive OS; vedi Google Play Services per le auto per altre informazioni i dettagli.

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 dal Raccolta di app Android for Cars per rilevare se l'app è su Android Automotive OS o Android Auto oppure non è connesso a un'auto.

Per Picture in picture (PIP), segui le istruzioni best practice per verificare se sia disponibile e reagisca in modo appropriato.

Gestire scenari offline

Nonostante le auto siano sempre più connesse a internet, consigliamo le app per gestire l'esecuzione senza connessione a internet, come 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 riducendo delicatamente di funzionalità che dipendono 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 l'app per le auto, puoi utilizzare il qualificatore risorse car per fornire risorse alternative su un veicolo con sistema operativo Android Automotive. Ad esempio, se utilizzi Risorse delle dimensioni da archiviare di spaziatura interna, potresti utilizzare un valore più alto per il set di risorse car per touch target più grandi.

Distribuire l'app

Dopo aver testato la tua 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 per Android Automotive OS, puoi segnalarla utilizzando Google Issue Tracker. Assicurati di compilare tutte le informazioni richieste nel modello di problema. Prima del giorno la segnalazione di un nuovo problema, controlla se è già presente nell'elenco dei problemi. Tu possono 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.

Crea un nuovo numero