Nozioni di base sulle app

L'auto è la tua tela: sblocca lo sviluppo Android per la strada

Altoparlanti

Informazioni

Informazioni sulla presentazione

Con l'espansione dei display per auto sui veicoli Android Auto e Android Automotive OS, gli sviluppatori devono affrontare una doppia sfida unica: offrire esperienze ricche e adattive quando l'auto è parcheggiata ed esperienze sicure per il conducente basate su modelli durante la guida. In questa sessione tecnica completa di 30 minuti, esploriamo l'architettura end-to-end e gli approcci di sviluppo per adattare le app per Android alle auto.

Dai concetti di base della progettazione di app per l'utilizzo in auto ai più recenti approcci per la creazione di esperienze multimediali che passano dall'audio al video quando l'auto passa dalla guida al parcheggio, scoprirai tutto ciò che devi sapere per lanciare la tua app.

Riepilogo

  • Android for Cars ha come target due piattaforme: Android Auto e Android Automotive OS. Uno proietta da uno smartphone, mentre l'altro viene eseguito direttamente sul veicolo.
  • La raccolta di app per auto fornisce modelli per interfacce ottimizzate per la guida che si adattano a varie configurazioni hardware dell'auto.
  • Le app per auto parcheggiate si basano su attività Android standard per offrire esperienze complete come streaming video, giochi e browser web.
  • La raccolta di app per auto 1.9 offre nuovi componenti dell'interfaccia utente e token di personalizzazione del brand. Inoltre, estende completamente il supporto dei modelli multimediali ad Android Automotive OS.
  • Le funzionalità park-to-drive avviano dinamicamente le attività video native quando il veicolo è parcheggiato, per poi tornare ai modelli multimediali per mantenere l'audio ininterrotto durante la guida.

Risorse

Gemini Notebook

Argomenti

  • android-for-cars
  • android-auto
  • android-automotive-os
  • car-app-library
  • media3
  • parked-apps

Trascrizione

Scarica la trascrizione

Introduzione ad Android per le auto

  • Okay.

  • Ciao a tutti.

  • Grazie per aver partecipato a questa sessione, "L'auto è la tua tela".

  • Questa sessione riguarda lo sblocco dello sviluppo Android per la strada.

  • Sono Paul Lammertsma.

  • E io sono Thomas Weathers.

  • Siamo Developer Relations Engineer del team di Android for Cars.

  • Sono sicuro che molti di voi hanno dedicato molto tempo ed energia per assicurarsi che le proprie app abbiano un aspetto fantastico e funzionino perfettamente su un'ampia varietà di schermi e dispositivi diversi, smartphone, pieghevoli, tablet e quant'altro.

  • Oggi ci concentreremo su uno schermo a cui forse non hai pensato.

  • Inoltre, può aiutarti a raggiungere i tuoi utenti in un modo unico.

  • ovvero il display dell'auto.

  • Iniziamo con una breve panoramica di ciò che intendo quando parlo di Android for Cars.

  • Android for Cars non è un'unica entità monolitica.

  • Puoi scegliere come target due piattaforme.

  • Innanzitutto, c'è Android Auto, un sistema di proiezione basato sullo smartphone.

  • Con Android Auto, l'app viene eseguita sullo smartphone e proietta la sua UI sul display dell'auto utilizzando una connessione cablata o wireless.

  • In secondo luogo, c'è Android Automotive OS, una variante di Android che viene eseguita direttamente sul veicolo.

  • Android Automotive OS funziona indipendentemente dallo smartphone, ha accesso diretto all'hardware del veicolo, ad esempio al controllo della climatizzazione e alla radio, e, soprattutto, gestisce anche la propria connessione dati.

  • Un sottoinsieme di auto con Android Automotive OS è costituito da auto con Google integrato.

  • Le auto con Google integrato includono anche app e servizi Google, come il Play Store, Gemini e Google Maps.

  • Anche se esistono due piattaforme, il nostro obiettivo è semplificare la creazione di un'unica app che possa essere implementata su entrambe le piattaforme, offrendo esperienze straordinarie.

  • Ecco un esempio di un'app multimediale creata una sola volta utilizzando la Raccolta di app per auto e il suo aspetto su Android Auto e su Android Automotive OS, su una gamma di forme e dimensioni di display diverse.

  • Esistono molti tipi diversi di dispositivi e piattaforme per cui potresti sviluppare.

  • Questo ci porta alla domanda: perché allora per le auto?

  • Innanzitutto, la scala qui è davvero enorme.

  • Oggi sono in circolazione oltre 250 milioni di auto compatibili con Android Auto e oltre 100 modelli di auto con Google integrato di 16 brand diversi.

  • Inoltre, quando le tue app sono in auto, raggiungi gli utenti durante i loro spostamenti quotidiani, le attività con la famiglia, le commissioni e persino i viaggi su strada.

  • Negli Stati Uniti, secondo l'American Driving Survey del 2024 dell'AAA, i conducenti trascorrono in media 60 minuti al giorno al volante.

  • Tuttavia, non raggiungi gli utenti solo mentre guidano attivamente.

  • Inoltre, li raggiungi quando sono parcheggiati.

  • Ad esempio, mentre ricaricano il veicolo presso la stazione di ricarica EV o mentre sono in fila per andare a prendere i figli a scuola.

  • Inoltre, con l'aumento dei display specifici per i passeggeri, prevediamo di vedere ancora più opportunità in futuro per promuovere il coinvolgimento degli utenti.

  • Okay.

  • Ora diamo un'occhiata ai diversi tipi di esperienze che puoi creare per le auto.

  • Per capire come creare app per le auto, è utile comprendere le due situazioni e i due stati principali che esistono per le app quando vengono eseguite all'interno di un veicolo.

  • Innanzitutto, ci sono le app che utilizzi durante la guida.

  • Si tratta di esperienze ottimizzate per la guida che possono essere utilizzate mentre il veicolo è in movimento.

  • Sono incluse le app delle categorie che vedi elencate sullo schermo, ad esempio app audio, che in genere chiamiamo app multimediali, app di messaggistica e comunicazione, navigazione e così via.

  • Le esperienze ottimizzate per la guida devono rispettare criteri rigorosi di protezione dalle distrazioni.

  • Esistono considerazioni speciali su come creare una UI per un'app in modo che possa essere utilizzata in sicurezza mentre il veicolo è in movimento.

  • Esistono un paio di modi diversi per creare app ottimizzate per la guida.

Panoramica della raccolta di app per auto

  • In questo intervento, però, ci concentreremo in particolare sull'utilizzo della raccolta di app per auto.

  • Si tratta di un insieme di librerie Jetpack che forniscono un framework basato su modelli che offre interfacce utente ottimizzate per la guida, occupandosi al contempo di adattarsi alle varie configurazioni hardware presenti nelle auto.

  • Quindi, pensa alle modalità di input, alle dimensioni dello schermo e alle proporzioni.

  • Sebbene questo non sia l'unico modo per creare esperienze ottimizzate per la guida per le auto, l'approccio su cui voglio concentrarmi in questo intervento è la creazione con Android for Cars App Library.

  • Spesso lo chiamiamo CAL.

  • Come ho accennato poco fa, la libreria di app per auto è un insieme di librerie che aiutano a creare le app da utilizzare nei veicoli.

  • Si tratta di un framework basato su modelli che fornisce interfacce utente ottimizzate per la guida, gestendo al contempo il lavoro di adattamento alle diverse configurazioni hardware.

  • Inoltre, puoi creare la tua app con la certezza che funzionerà bene su tutte queste diverse configurazioni, sia che utilizzino Android Auto sia che utilizzino Android Automotive OS.

  • Le app create utilizzando CAL possono fare affidamento su questa architettura client host.

  • L'app host, che è Android Auto stesso o Google Automotive App Host nel caso di auto con Google integrato, è il renderer di sistema.

  • In definitiva, controlla ciò che deve essere mostrato all'utente sui suoi display.

  • In qualità di sviluppatore di app, non sei tu a disegnare i pixel.

  • Invece, fornisci dati strutturati e lo stato dei tuoi dati ai modelli della Raccolta di app per auto.

  • È questo host che poi prende questi dati e li disegna in modo sicuro, conforme alle norme di sicurezza, con un layout ottimizzato per le distrazioni.

  • Diamo un'occhiata alle classi all'interno della CAL, che devi estendere per creare la tua app, a partire da CarAppService.

  • Si tratta di una sottoclasse del servizio Android che funge da punto di accesso per le applicazioni in hosting per comunicare con le app client e il suo scopo è creare istanze di sessione con cui l'host interagisce.

  • Puoi pensare a una sessione come a un'istanza di un'app client in esecuzione su un display del veicolo.

  • Come altri componenti Android, ha un proprio ciclo di vita che può essere utilizzato per inizializzare e rimuovere le risorse utilizzate durante l'esistenza dell'istanza della sessione.

  • Si tratta di una relazione one-to-many tra CarAppService e una sessione.

  • Ad esempio, un CarAppService può avere due istanze di sessione, una per un display principale e un'altra per un display del quadro strumenti per le app di navigazione che supportano gli schermi del quadro strumenti.

  • Ecco un esempio: un'auto ha un display principale e un display del quadro strumenti, ciascuno associato a una sessione dedicata. Questo è anche il modo in cui tu, in qualità di sviluppatore di app, puoi supportare i veicoli con più display.

  • All'interno di una sessione, le istanze di schermata sono responsabili della generazione delle interfacce utente visualizzate dalle app host.

  • Queste interfacce utente sono rappresentate da classi di modelli che modellano ciascuna un tipo specifico di layout, ad esempio una griglia o un elenco.

  • Pertanto, ogni sessione gestisce uno stack di istanze di schermate che gestiscono i flussi utente in diverse parti dell'applicazione e, come per la sessione, una schermata ha un proprio ciclo di vita a cui puoi collegarti.

  • Tuttavia, il fatto che l'host esegua il rendering della UI e che tu utilizzi i modelli della libreria di app per auto non significa che tu abbia vincoli rigidi o che non possa personalizzare la tua applicazione.

  • Sono disponibili numerosi modelli e componenti che puoi utilizzare e combinare per ottenere l'esperienza che preferisci.

  • Esistono modelli per uso generico, che possono essere utilizzati da tutti i tipi di app all'interno della Raccolta di app per auto, e modelli per uso speciale, destinati a esperienze con l'app particolari, come la navigazione o i punti d'interesse.

  • Prima di entrare nei dettagli della creazione di esperienze ottimizzate per la guida, voglio parlare dell'altra situazione in cui puoi eseguire applicazioni nelle auto: quando l'auto è parcheggiata.

Sviluppo di app per auto parcheggiate

  • Esistono alcune categorie di applicazioni che possono essere utilizzate solo quando il veicolo è parcheggiato, tra cui app video, giochi e browser.

  • Ma quando l'auto non è in movimento, le linee guida sulla distrazione del conducente vengono revocate e puoi offrire esperienze più in linea con la tua UI adattiva esistente.

  • Le app parcheggiate sono basate sulle attività e sono simili, o addirittura uguali, alle attività utilizzate su altri dispositivi, come smartphone o tablet. Parleremo delle app parcheggiate in dettaglio nella prossima sezione.

  • Sebbene le esperienze con l'app per auto parcheggiate riutilizzino le attività adattive esistenti, esistono comunque norme sulla qualità specifiche per le auto che devi rispettare, dalle dichiarazioni del manifest e dai ritagli display alla messa in pausa della riproduzione quando l'auto inizia a muoversi.

  • Per aiutarti ad automatizzare questo lavoro, abbiamo lanciato una nuova skill per Android per le app parcheggiate.

  • Quindi, prima di iniziare, assicurati di aver installato la CLI Android, che puoi trovare tramite questo link breve.

  • Una volta completata la configurazione, esegui android skills list per esplorare le skill disponibili.

    android skills list
    android skills add android-for-cars-parked-apps
  • Esistono molte competenze diverse che puoi utilizzare per portare lo sviluppo Android a un livello superiore.

  • In particolare per Android for Cars, puoi utilizzare android skills add android-for-cars-parked-apps per aggiungere la skill al contesto dell'agente.

  • Ora, qualunque sia il tuo agente AI preferito, ti fornisce questa guida passo passo per configurare il manifest per Android Auto o per Android Automotive OS, gestendo gli inset delle finestre dell'auto e cose come la navigazione a ritroso, applicando le limitazioni di riproduzione per la distrazione del conducente e può anche controllare la tua app di video, giochi o browser prima di inviarla a Google Play.

Panoramica delle categorie di app per auto

  • Quindi, lo sviluppo di app per auto è un po' unico anche per via del concetto di queste categorie di app.

  • Come ho già detto, esistono alcune categorie di app che possono essere utilizzate durante la guida e altre che possono essere utilizzate durante il parcheggio.

  • Queste categorie evidenziate sono quelle che possono essere utilizzate durante la guida.

  • Alcune di queste sono contrassegnate con CAL, come ho menzionato, questa è la raccolta di app per auto, e le app di questa categoria utilizzano modelli come quelli che abbiamo visto poco fa.

  • Ora li esaminerò rapidamente, senza entrare troppo nei dettagli.

  • Iniziamo con le app multimediali, ovvero le app che riproducono audio, non video.

  • Esistono due modi per crearli.

  • Quello in alto, contrassegnato con MediaBrowserService, è una sorta di opzione più semplice.

  • In questo modo, fornisci i metadati, mentre l'interfaccia dello schermo di infotainment si occupa completamente del rendering della UI di riproduzione e del browser multimediale in un modo ottimizzato per l'auto.

  • L'altra opzione è creare app multimediali utilizzando la libreria di app per auto, che offre un maggiore controllo e più opzioni per personalizzare lo stile e la presentazione delle app multimediali. Thomas ci mostrerà di più a riguardo tra un attimo.

  • Le app di navigazione sono, ovviamente, un caso d'uso chiave, in quanto forniscono percorsi e indicazioni stradali passo passo.

  • Anche le app per i conducenti di servizi di car sharing rientrano in questa categoria.

  • Le app per i punti d'interesse ti aiutano a trovare l'accesso a luoghi utili nelle vicinanze, come caricabatterie EV o posizioni del parcheggio.

  • Le app per l'Internet of Things o IoT ti consentono di accedere agli smart device ovunque ti trovi, ad esempio per la gestione della casa.

  • Sono disponibili anche app meteo che possono fornire radar in tempo reale, avvisi di tempesta e previsioni specifiche per la località.

  • Infine, la comunicazione si suddivide in tre sottocategorie: estensione delle notifiche di base all'auto, app di messaggistica e app per videochiamate.

  • Infine, ci sono le categorie parcheggiate: app di streaming video, giochi e browser web.

  • Sono felice di annunciare che da poche settimane la pubblicazione di giochi su Android Auto e Android Automotive OS è disponibile per tutti gli sviluppatori.

  • Noterai che alcune di queste categorie sono contrassegnate come Aperte, altre come In versione beta e altre ancora come Disponibili a breve.

  • "Aperta" significa che qualsiasi sviluppatore può inviare un'app di questa categoria direttamente in produzione.

  • Beta significa che, anche se puoi pubblicare l'app nei canali interni o chiusi, non puoi pubblicarla in produzione, a meno che tu non venga accettato nell'ambito di un programma di accesso in anteprima.

  • La documentazione di ciascuna di queste categorie include ulteriori informazioni e un link al nostro modulo di interesse.

  • La sezione "Disponibile a breve" è invece dedicata alle categorie che al momento non sono supportate, ma che prevediamo di supportare in futuro.

  • In definitiva, il nostro obiettivo è unificare la piattaforma.

  • Vogliamo che tu possa creare e ottenere la massima copertura scrivendo una sola volta e distribuendo sia su Android Auto sia su Android Automotive OS, indipendentemente dalla categoria.

  • Ora passo la parola a Thomas per parlare dei media.

Aggiornamenti multimediali della raccolta di app per auto

  • A presto.

  • Ottimo.

  • Per questo motivo, l'anno scorso abbiamo introdotto la Car App Library per le app multimediali nella versione 1.8, portando su Android Auto UI di navigazione basate su modelli e azioni personalizzate.

  • Questo includeva il modello di riproduzione multimediale mostrato qui a sinistra.

  • Quest'anno, durante l'evento I/O, abbiamo introdotto più UI navigabili tramite la libreria di app per auto 1.9.

  • Con il rilascio della versione beta di CAL 1.9, ora puoi sbloccare gli aggiornamenti delle funzionalità principali su Auto e Automotive OS.

  • Tra le novità principali, la personalizzazione del brand tramite l'espressione dell'app, che consente di personalizzare i token di colore e forma con layout visualizzati dall'host, rispettando al contempo le regole di sicurezza, oltre a nuovi componenti dell'interfaccia utente come sezioni in evidenza, elementi di elenco condensati, chip scorrevoli e un mini player persistente.

  • Inoltre, CAL 1.9 estende completamente il supporto dei modelli multimediali ad AAOS, promuovendo una vera e propria unificazione della piattaforma in entrambi gli ecosistemi.

  • A breve sarà disponibile la prossima iterazione della libreria di app per auto: CAL versione 10.

  • La versione 10 di CAL offrirà modelli più personalizzati per le app di comunicazione, offrendo esperienze di chiamata più solide e personalizzate durante la guida.

  • Inoltre, includiamo una nuova categoria di app e modelli per app, con esperienze conversazionali durante la guida.

  • Infine, sono in fase di sviluppo ancora più funzionalità per transizioni più fluide dalla modalità di parcheggio alla modalità di guida con i modelli della raccolta di app per auto.

  • Continua a seguirci: sono in arrivo altre novità.

Funzionalità park-to-drive

  • Le funzionalità di parcheggio e guida che utilizzano la libreria di app per auto consentono alla tua app di passare dinamicamente da una modalità all'altra e di mostrare contenuti adattivi quando il veicolo è fermo, per poi tornare senza problemi ai modelli della libreria di app per auto durante la guida.

  • Le applicazioni principali includono l'offerta di flussi di autenticazione personalizzati quando il veicolo è fermo o l'attivazione di un'esperienza dedicata per il parcheggio, come lo streaming di podcast video o clip musicali.

  • Si integra direttamente con il modello di riproduzione multimediale.

  • Pertanto, i veicoli fermi consentono ai conducenti di accedere completamente all'attività Android nativa della tua app, abilitando contenuti multimediali avanzati come lo streaming video.

  • Non appena l'auto viene messa in marcia, si attivano le misure di protezione contro le distrazioni, che richiedono all'app di tornare al modello multimediale della Raccolta di app per auto per consentire un ascolto audio conforme e senza interruzioni.

  • Siamo in un momento di trasformazione per le esperienze in auto.

  • Le app multimediali vogliono evolversi oltre le tradizionali interfacce di navigazione e riproduzione per offrire momenti più ricchi, coinvolgenti e interattivi sia ai conducenti che ai passeggeri.

  • Ora vedremo un esempio di come aggiungere un'attività video nativa utilizzando la libreria Media3 per avviare la riproduzione quando l'auto passa alla modalità di parcheggio.

  • Per iniziare, devi collegare una superficie di rendering video direttamente all'istanza di riproduzione in background.

    override fun onStart() {
           super.onStart()
           ...
           controllerFuture = MediaController.Builder(
             this,
             sessionToken
           ).buildAsync()
    
           controllerFuture?.addListener({
               mediaController = controllerFuture?.get()
               playerView.player = mediaController
           }, ContextCompat.getMainExecutor(this))
    }
  • Vuoi evitare di creare un'istanza di un media player separato all'interno di questa attività, ma vuoi mantenere un ExoPlayer o un media player centrale all'interno del tuo servizio principale, ad esempio un servizio di raccolta multimediale Media3, che gestisce la combinazione di stream audio e video.

  • Quindi, durante il movimento, quando non è associato alcun servizio attivo, il player decodifica solo l'audio, ma quando i conducenti aprono l'attività video mentre sono parcheggiati, devi collegare la relativa superficie di rendering direttamente al player del servizio sottostante.

  • Quindi, utilizzando Media3, mediaController implementa il player in modo nativo, consentendo un'assegnazione diretta, come vedi qui, playerView impostato-- playerView.player impostato direttamente su mediaController.

  • Quindi, devi registrare il tuo entry point nativo utilizzando ParkedOnlyOnClickListener.

    val watchVideoAction = Action.Builder()
      .setTitle("Watch Video")
      .setIcon(videoCarIcon)
      .setOnClickListener(
        ParkedOnlyOnClickListener.create {
          val intent = Intent(
            carContext,
            VideoPlayerActivity::class.java
          )
            .apply {
              addFlags(
                Intent.FLAG_ACTIVITY_NEW_TASK
              )
            }
          carContext.startActivity(intent)
        })
      .build()
  • Questo wrapper fornisce un trigger di intent all'interno della barra dell'intestazione dell'interfaccia di riproduzione dei contenuti multimediali.

  • Quindi, includi un'azione per avviare la riproduzione del video, inserendo il relativo listener di selezione in un ParkedOnlyOnClickListener.

  • Quindi, in modalità Guida, questi tocchi vengono intercettati dall'app host, che mostra un messaggio di sicurezza del sistema, perciò non potrai accedere a quella schermata mentre guidi, ma quando parcheggi, il callback attiva startActivity all'interno di carContext per avviare l'attività a schermo intero designata.

  • Ricorda che, in queste app della raccolta di app per auto, devi contrassegnare il target video come distractionOptimized=false all'interno del manifest in modo che il sistema operativo riconosca che si tratta di un flusso di lavoro solo per auto parcheggiate.

    <activity
       android:name=".VideoPlayerActivity"
       android:exported="false"
       android:launchMode="singleTop">
       <meta-data
           android:name="distractionOptimized"
           android:value="false" />
    </activity>

Gestione delle transizioni dalla modalità di parcheggio alla modalità di guida

  • Infine, vediamo cosa succede quando il conducente passa dalla modalità di parcheggio alla modalità di guida.

  • Se l'attività non è ottimizzata per evitare distrazioni e rimane attiva mentre l'auto si muove, AAOS presenta un overlay di blocco del sistema che, in sostanza, ti dice di parcheggiare per continuare a utilizzare l'app.

  • Per evitare questa schermata bloccata, il nostro obiettivo è tornare senza problemi al modello di riproduzione dei contenuti multimediali senza interrompere l'audio.

  • Quindi, quando isRequiresDistractionOptimization restituisce true qui, fondamentalmente cancelliamo la superficie di rendering del video dalla sessione multimediale sottostante e chiamiamo finish sull'attività su Play perché è stata avviata sopra l'esperienza CAL, terminandola e tornando direttamente al modello di riproduzione multimediale e continuando la riproduzione audio.

    class VideoPlayerActivity : ComponentActivity(){
      override fun onStart() {
    
        …
    
        if (uxRestrictionsManager?
            .currentCarUxRestrictions?
            .isRequiresDistractionOptimization
                == true) {
          revertToCarAppTemplate()
        }
      }
    
      private fun revertToCarAppTemplate() {
        mediaControllerCompat
          .sendCommand("CMD_CLEAR_VIDEO_SURFACE",
                       null, null)
        finish()
      }
    }
  • Mantenere la riproduzione audio ininterrotta è fondamentale per un'esperienza utente ottimale, quindi, mantenendo attiva la sessione multimediale come servizio in primo piano, l'audio continua senza interruzioni durante questi cambi di stato.

    <activity
            android:name="androidx.car.app.activity.CarAppActivity"
            android:exported="true"
            android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
    
            <action android:name="androidx.car.app.media.action.SHOW_MEDIA_PLAYBACK" />
        </intent-filter>
        <meta-data
                android:name="distractionOptimized"
                android:value="true" />
    </activity>
  • Devi anche eseguire l'override di onNewIntent nella schermata CAL per acquisire gli intenti SHOW_MEDIA_PLAYBACK.

    class MyCarAppSession : Session() {
        override fun onCreateScreen(intent: Intent): Screen {
            // 1. Link your active MediaSession token with Car App Library's MediaPlaybackManager
            val mediaPlaybackManager = carContext.getCarService(MediaPlaybackManager::class.java)
            mediaPlaybackManager.registerMediaPlaybackToken(mediaSessionToken)
    
            // 2. Handle deep link if cold-started from the vehicle's media widget
            handlePlaybackIntent(intent)
            return HomeScreen(carContext)
        }
        override fun onNewIntent(intent: Intent) {
            super.onNewIntent(intent)
    
            // 3. Handle deep link when the session is already running
            handlePlaybackIntent(intent)
        }
    }
  • In questo modo, ogni volta che gli utenti interagiscono con un widget multimediale del sistema del veicolo che si trova nella schermata Home delle auto, il deep link li indirizza direttamente alla visualizzazione In riproduzione nella libreria di app per auto.

  • Pertanto, convalidare queste transizioni durante il processo di sviluppo è davvero semplice.

  • Puoi eseguire i comandi adb su AAOS.

  • In questo caso, sarebbe emulate-driving-state drive o emulate-driving-state park quando vuoi tornare alle attività.

  • Ecco un esempio di utilizzo della nostra nuova app multimediale Media3 di esempio che utilizza la libreria di app per auto con riproduzione di video da parcheggio a guida.

  • Quindi, dai un'occhiata al nostro stand Android adattivo al piano di sotto e al nostro GitHub car-samples molto presto.

  • Le funzionalità di passaggio dalla sosta alla guida sono attualmente disponibili su Android Automotive OS per le app multimediali che hanno già integrato la libreria di app per auto per l'esperienza di guida, in modo da poter offrire esperienze più complete durante la sosta.

  • Dai un'occhiata alla nostra documentazione molto presto su developer.android.com ed esprimi il tuo interesse per questa funzionalità nella tua app.

  • Paul.

Novità della raccolta di app per auto

  • Ottimo.

  • Grazie, Thomas.

  • Prima di concludere, vorrei condividere con te un paio di modi per scoprire di più sulle novità in arrivo entro la fine dell'anno.

  • Come ha accennato Thomas, CAL 1.9 è attualmente in versione alpha.

  • A breve, questa funzionalità passerà alla versione beta.

  • Inoltre, CAL 1.10 entrerà in fase alpha entro la fine dell'anno, così potrai iniziare a valutare le UI conversazionali e le ultime funzionalità di comunicazione e di passaggio dalla modalità di parcheggio alla guida.

  • Infine, siamo felici di condividere, come ho già detto, che i giochi sono disponibili su Android Auto e Android Automotive OS, quindi questo è davvero il momento perfetto per ottimizzare i tuoi titoli per le auto.

  • Per scoprire di più sui dettagli dell'implementazione, consulta la documentazione nella guida "Crea giochi per auto".

  • Puoi scoprire di più su come adattare i tuoi giochi per le auto e tenere traccia delle altre novità e modifiche di Android per le auto nella nostra pagina "Novità".

  • Ci auguriamo che tu abbia capito che le auto e i loro utenti sono pronti per le tue app.

  • Puoi basarti sulle tue app adattive esistenti per creare esperienze complete quando l'auto è parcheggiata e utilizzare una serie di modelli della Raccolta di app per auto per creare esperienze sicure ottimizzate per la guida.

  • Prima della pubblicazione, puoi eseguire test approfonditi utilizzando l'unità principale desktop, gli emulatori, AAOS in esecuzione su Pixel Tablet o Firebase Test Lab.

  • Hai già le competenze per sviluppare per questo ecosistema e milioni di auto aspettano le tue app, quindi mettiamole in strada.

Codice

Snippet di codice

Snippet di shell al minuto 09:03 in "Sviluppo di app per auto parcheggiate"
android skills list
android skills add android-for-cars-parked-apps
Snippet Kotlin al minuto 15:20 in "Funzionalità di passaggio da parcheggio a guida"
override fun onStart() {
       super.onStart()
       ...
       controllerFuture = MediaController.Builder(
         this,
         sessionToken
       ).buildAsync()

       controllerFuture?.addListener({
           mediaController = controllerFuture?.get()
           playerView.player = mediaController
       }, ContextCompat.getMainExecutor(this))
}
Snippet Kotlin alle 16:06 in "Funzionalità di parcheggio e guida"
val watchVideoAction = Action.Builder()
  .setTitle("Watch Video")
  .setIcon(videoCarIcon)
  .setOnClickListener(
    ParkedOnlyOnClickListener.create {
      val intent = Intent(
        carContext,
        VideoPlayerActivity::class.java
      )
        .apply {
          addFlags(
            Intent.FLAG_ACTIVITY_NEW_TASK
          )
        }
      carContext.startActivity(intent)
    })
  .build()
Snippet XML al minuto 16:42 in "Funzionalità di parcheggio e guida"
<activity
   android:name=".VideoPlayerActivity"
   android:exported="false"
   android:launchMode="singleTop">
   <meta-data
       android:name="distractionOptimized"
       android:value="false" />
</activity>
Snippet Kotlin al minuto 17:17 in "Gestione delle transizioni da parcheggio a guida"
class VideoPlayerActivity : ComponentActivity(){
  override fun onStart() {

    …

    if (uxRestrictionsManager?
        .currentCarUxRestrictions?
        .isRequiresDistractionOptimization
            == true) {
      revertToCarAppTemplate()
    }
  }

  private fun revertToCarAppTemplate() {
    mediaControllerCompat
      .sendCommand("CMD_CLEAR_VIDEO_SURFACE",
                   null, null)
    finish()
  }
}
Snippet XML alle 17:36 in "Gestione delle transizioni da parcheggio a guida"
<activity
        android:name="androidx.car.app.activity.CarAppActivity"
        android:exported="true"
        android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />

        <action android:name="androidx.car.app.media.action.SHOW_MEDIA_PLAYBACK" />
    </intent-filter>
    <meta-data
            android:name="distractionOptimized"
            android:value="true" />
</activity>
Snippet Kotlin alle 17:49 in "Gestione delle transizioni da parcheggio a guida"
class MyCarAppSession : Session() {
    override fun onCreateScreen(intent: Intent): Screen {
        // 1. Link your active MediaSession token with Car App Library's MediaPlaybackManager
        val mediaPlaybackManager = carContext.getCarService(MediaPlaybackManager::class.java)
        mediaPlaybackManager.registerMediaPlaybackToken(mediaSessionToken)

        // 2. Handle deep link if cold-started from the vehicle's media widget
        handlePlaybackIntent(intent)
        return HomeScreen(carContext)
    }
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)

        // 3. Handle deep link when the session is already running
        handlePlaybackIntent(intent)
    }
}