Componenti di sistema e flussi utente

Il seguente diagramma illustra i componenti che interagiscono con i contenuti multimediali:

Componenti di sistema

Figura 1. Componenti di sistema

Gli elementi in questa figura sono descritti nella tabella:

Componente Descrizione
Schermata Home Rappresenta altre piattaforme nell'interfaccia utente dell'auto che mostrano e controllano i contenuti multimediali attualmente in riproduzione. In AOSP, questa è la schermata principale visualizzata all'avvio del sistema. Da questa schermata, gli utenti possono visualizzare i dettagli dell'elemento multimediale in riproduzione ed eseguire un insieme limitato di azioni standard e personalizzate (ad esempio Riproduci e Pausa).
UI di sistema Fornisce funzionalità che includono opzioni di navigazione dell'interfaccia utente globale, ad esempio per accedere ai contenuti multimediali.
Assistenti Android fornisce meccanismi per consentire a diverse app di assistenti vocali di interagire con il sistema. Queste app possono interagire con le origini multimediali in background (ad esempio, riprodurre un brano come risultato di un comando vocale) o passare ai contenuti multimediali in primo piano (ad esempio, quando a un'app di assistenza vocale viene chiesto di visualizzare l'interfaccia utente di un'origine multimediale specifica).
Avvio app Tutte le app per Android vengono avviate in Avvio app, incluse le sorgenti multimediali. I contenuti multimediali possono presentare il proprio selettore di origini multimediali, integrando o sostituendo Avvio app come punto di partenza per i contenuti multimediali.
Google Play Store Quando viene utilizzato GAS, è qui che gli utenti trovano e installano nuove app su un dispositivo Android. Per i contenuti multimediali, una volta installate le app, gli utenti vengono indirizzati a Media per completare la procedura di accesso o iniziare a interagire con l'app.
Media Session Manager Servizio di sistema Android che monitora e controlla le sessioni multimediali da tutte le sorgenti multimediali. Fornisce meccanismi per rilevare quando un'origine media diventa l'origine media in primo piano. I contenuti multimediali e tutte le altre app che mostrano la sorgente multimediale in riproduzione (ad esempio la schermata Home) utilizzano Media Session Manager per rilevare questi eventi e aggiornare di conseguenza l'interfaccia utente. Le origini multimediali interagiscono con Media Session Manager tramite l'API Media Session.
Radio App specializzata per interagire con l'hardware della radio. Radio cerca le stazioni radio, selezionando rapidamente quelle identificate di recente e passando da una banda all'altra. I componenti dell'interfaccia utente condivisi sia da Radio che da Contenuti multimediali consentono all'utente di passare da un'esperienza all'altra.
Driver Distraction Engine Servizio di sistema Android utilizzato per imporre limitazioni all'esperienza utente in base allo stato di guida dell'auto. Per l'esperienza utente di accesso e impostazioni delle sorgenti multimediali (in cui lo schermo è controllato direttamente dalle sorgenti multimediali), questo servizio garantisce che non vengano visualizzati contenuti non sicuri quando l'auto è in stato di guida. Gli OEM possono personalizzare la definizione di questi stati e il modo in cui il sistema reagisce in queste situazioni (ad esempio, mostrando una schermata di overlay di blocco).

Flussi utente

Avvio di app multimediali

Di seguito viene visualizzato il processo che avvia Media.

Avvio di app multimediali

Figura 2. Avvio di app multimediali

I contenuti multimediali devono essere avviati utilizzando il seguente valore implicito CAR_INTENT_ACTION_MEDIA_TEMPLATE. Questo intent può avere le seguenti informazioni come extra:

  • android.car.intent.extra.MEDIA_COMPONENT (facoltativo). Stringa extra per rappresentare il nome del componente appiattito di un MediaBrowserService nell'app multimediale a cui deve essere collegato il media. Se non viene fornito, Media mostra l'app multimediale attualmente selezionata. Questo intent viene utilizzato dai seguenti punti di contatto:

    • Interfaccia utente di sistema. Utilizzato per tornare all'esperienza multimediale o per iniziare a utilizzarla per la prima volta. In questo caso, l'intent riportato sopra verrà utilizzato senza alcun extra per fare in modo che Media mostri l'app multimediale attualmente selezionata.

    • Schermata Home, assistenti e Centro notifiche. Gli utenti possono accedere a Media per visualizzare l'app multimediale attualmente selezionata. In tutti i casi, viene attivato l'intent implicito senza extra.

    • Avvio app. Quando gli utenti selezionano un'app multimediale dall'Avvio app, l'intent riportato sopra include l'extra CAR_EXTRA_MEDIA_COMPONENT, che contiene l'app multimediale selezionata. Media la designa come app appena selezionata e si connette ad essa. Per maggiori dettagli, consulta la sezione Integrazione di App Launcher con Media di seguito.

Avvio app all'integrazione dei contenuti multimediali

Le app multimediali non sono autorizzate a fornire attività annotate con la categoriaandroid.intent.category.LAUNCHER. Di conseguenza, Avvio app (o un suo equivalente) deve implementare una logica speciale per gestire l'integrazione delle origini media:

  • Avvio app deve eseguire la scansione del sistema alla ricerca di pacchetti che implementano MediaBrowserService.SERVICE_INTERFACE. Per questi pacchetti, Avvio app recupera l'icona del servizio simile a quella utilizzata per recuperare altre attività.

  • Avvio app combina poi questi pacchetti con quelli che implementano le attività android.intent.category.LAUNCHER. Se un'app fornisce un'implementazione di MediaBrowserService e un'attività di Avvio app, il servizio ha la precedenza.

    Al momento, nessuna app di origine media può fornire un'attività di avvio applicazioni.

  • Un esempio di questa logica è disponibile nel codice AOSP all'indirizzo AppLauncherUtils#getAllLauncherApps().

Flusso di accesso e opzioni di configurazione

Le app multimediali possono includere un'attività Impostazioni ottimizzata per il veicolo. Questa attività può essere utilizzata per implementare flussi utente non gestiti dalle API Android Media, ad esempio:

  • Accedi
  • Uscire
  • Passaggio da un account all'altro
  • Display a cui l'utente ha attualmente eseguito l'accesso (se presente)
  • Configurazione del servizio

Flusso di registrazione

Figura 3. Flusso di accesso

Questa attività Impostazioni viene dichiarata dall'app multimediale con il seguente filtro intent:

<activity android:name=".AppSettingsActivity"
          android:exported="true
          android:theme="@style/SettingsActivity"
           android:label="@string/app_settings_activity_title">
   <intent-filter>
       <action android:name="android.intent.action.APPLICATION_PREFERENCES"/>
   </intent-filter>
</activity>

I contenuti multimediali devono implementare la seguente logica:

  • Verifica che l'app multimediale attualmente selezionata includa un'attività con il filtro per intent specificato.

  • In questo caso, consenti all'utente di passare all'attività.

  • Se sono attive le limitazioni dell'esperienza utente dell'auto (ad esempio, l'auto è in movimento), questa funzionalità deve essere disattivata perché l'attività Impostazioni non è un'interfaccia utente ottimizzata per il conducente.

Gestione degli errori e accesso obbligatorio

Media interagisce con le app multimediali tramite l'API Android Media Session. Nell'ambito di questa API, Media riceve un oggetto PlaybackState che comunica lo stato attuale dell'app multimediale.

La procedura di accesso inizia quando l'app multimediale passa da PlaybackState a STATE_ERROR, incluso un codice di errore specifico (vedi i dettagli di seguito). In questo caso, Media mostra la descrizione dell'errore e un'opzione per accedere a un'attività di accesso implementata dall'app multimediale.

Le app possono utilizzare lo stesso flusso per segnalare altre situazioni di errore (ad esempio un errore di connettività del server).

Gestione degli errori

Figura 4. Gestione degli errori

Nell'ambito della normale gestione degli errori PlaybackState, Media deve verificare il seguente input.

  • Codice di errore PlaybackState uguale a PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Ciò indica che l'app multimediale richiede l'accesso per continuare a funzionare. È possibile ricevere altri codici di errore, che indicano altri tipi di situazioni di errore.

  • Il messaggio di errore PlaybackState (impostato dalle app multimediali che utilizzano il metodo PlaybackStateCompat.Builder#setErrorMessage ) contiene una spiegazione in un linguaggio comprensibile (ad es."Non hai eseguito l'accesso"). Questo messaggio deve essere mostrato all'utente e deve essere ottimizzato per la guida senza distrazioni (DO).

  • Se vuoi, PlaybackState può includere i seguenti extra (impostati dalle app multimediali con il metodo PlaybackStateCompat.Builder#setExtras) con le seguenti chiavi.

    • android.media.extras.ERROR_RESOLUTION_ACTION_LABEL. Imposta una stringa che contiene il messaggio leggibile da visualizzare sul pulsante toccato dall'utente per avviare il flusso di accesso.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Impostato con un PendingIntent per essere attivato quando l'utente fa clic sul pulsante sopra indicato. Questo PendingIntent indica un'attività di accesso personalizzata implementata dalla stessa app multimediale.

  • Lo stato PlaybackState è uguale a STATE_ERROR. Ciò indica che non è possibile eseguire altre operazioni fino al completamento dell'accesso.