Componenti di sistema e flussi utente

I componenti che interagiscono con Media sono descritti nella tabella:

Componente Descrizione
Schermata Home Rappresenta altre sezioni dell'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 nell'interfaccia utente globale, ad esempio per passare a Media.
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 viene chiesto a un'app di assistente vocale di visualizzare la UI di un'origine multimediale specifica).
Avvio app Tutte le app per Android vengono avviate in Avvio app, incluse le origini media. I contenuti multimediali possono presentare il proprio selettore di origini multimediali, integrando o sostituendo l'app di avvio come punto di partenza per i contenuti multimediali.
Google Play Store Quando viene utilizzato GAS, è qui che gli utenti individuano e installano nuove app in un dispositivo Android. Per i contenuti multimediali, una volta installate le app, gli utenti vengono indirizzati alla sezione Contenuti multimediali per completare la procedura di accesso o per iniziare a interagire con l'app.
Media Session Manager Servizio di sistema Android che monitora e controlla le sessioni multimediali di tutte le fonti 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 la UI di conseguenza. Le origini media interagiscono con Media Session Manager tramite l'API Media Session.
Radio App specializzata per interagire con l'hardware della radio. La radio cerca stazioni radio, seleziona rapidamente le stazioni identificate di recente e passa da una banda radio all'altra. I componenti dell'interfaccia utente condivisi sia da Radio che da Media consentono all'utente di passare da un'esperienza all'altra.
Driver Distraction Engine Servizio di sistema Android utilizzato per imporre limitazioni UX in base allo stato di guida dell'auto. Per l'UX di accesso e impostazioni delle sorgenti multimediali (dove lo schermo è controllato direttamente dalle sorgenti multimediali), questo servizio garantisce che non venga visualizzato alcun contenuto non sicuro quando l'auto è in modalità di guida. Gli OEM possono personalizzare la definizione di questi stati e il modo in cui il sistema reagisce in queste situazioni (ad esempio, visualizzando una sovrapposizione di blocco dello schermo).

Flussi utente

Avvio dell'app multimediale

I contenuti multimediali devono essere avviati utilizzando l'intent 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 compresso di un MediaBrowserService nell'app multimediale a cui deve connettersi il media. Se non viene fornita, Media mostra l'app multimediale attualmente selezionata. Questo intent viene utilizzato dai seguenti punti di ingresso:

    • UI di sistema. Utilizzato per tornare all'esperienza multimediale o per iniziare a utilizzarla per la prima volta. In questo caso, l'intent precedente verrà utilizzato senza componenti aggiuntivi, in modo che Media visualizzi l'app multimediale attualmente selezionata.

    • Schermata Home, assistenti e Centro notifiche. Gli utenti possono andare su 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 da Avvio app, l'intent precedente include l'extra CAR_EXTRA_MEDIA_COMPONENT, che contiene l'app multimediale selezionata. Media la designa come l'app appena selezionata e si connette a essa. Per maggiori dettagli, consulta la sezione Avvio app per l'integrazione con i contenuti multimediali di seguito.

Avvio app per l'integrazione dei contenuti multimediali

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

  • Avvio app deve analizzare il sistema alla ricerca di pacchetti che implementano MediaBrowserService.SERVICE_INTERFACE. Per questi pacchetti, Avvio app recupera l'icona del servizio in modo simile a quello utilizzato per recuperare altre attività.

  • Avvio app combina quindi 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 della stesura di questo articolo, nessuna app di origine media può fornire un'attività di avvio.

  • 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 i flussi utente non gestiti dalle API Android Media, ad esempio:

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

Questa attività Impostazioni viene dichiarata dall'app multimediale con il seguente filtro per 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 media 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 accedere all'attività.

  • Se le limitazioni della UX per l'auto sono in vigore (ad esempio, l'auto è in movimento), questa funzionalità deve essere disattivata perché l'attività Impostazioni non è una UI ottimizzata per il conducente.

Gestione degli errori e accesso obbligatorio

Media interagisce con le app multimediali tramite l'API Media Session di Android. 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 cambia PlaybackState in STATE_ERROR, incluso un codice di errore specifico (vedi i dettagli di seguito). Quando si verifica questo problema, Media mostra la descrizione dell'errore e un'agevolazione per passare a un'attività di accesso implementata dall'app di contenuti multimediali.

Lo stesso flusso può essere utilizzato dalle app per segnalare altre situazioni di errore (ad esempio, un errore di connettività del server).

Nell'ambito della normale gestione degli errori di PlaybackState, Media deve verificare i seguenti input.

  • PlaybackState codice di errore uguale a PlaybackStateCompat#ERROR_CODE_AUTHENTICATION_EXPIRED. Questo segnale indica che l'app multimediale richiede l'accesso per continuare a funzionare. Possono essere ricevuti altri codici di errore che indicano altri tipi di situazioni di errore.

  • Il messaggio di errore PlaybackState (impostato dalle app multimediali utilizzando il metodo PlaybackStateCompat.Builder#setErrorMessage) contiene una spiegazione leggibile (ad esempio, "Non hai eseguito l'accesso"). Questo messaggio deve essere visualizzato dall'utente e deve essere ottimizzato per la distrazione alla guida.

  • 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 mostrare sul pulsante toccato dall'utente per avviare il flusso di accesso.

    • android.media.extras.ERROR_RESOLUTION_ACTION_INTENT. Imposta con un PendingIntent da attivare quando l'utente fa clic sul pulsante menzionato sopra. Questo PendingIntent rimanda a 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 finché l'accesso non viene completato.