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 unMediaBrowserServicenell'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 diMediaBrowserServicee 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.
-
PlaybackStatecodice di errore uguale aPlaybackStateCompat#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 metodoPlaybackStateCompat.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,
PlaybackStatepuò includere i seguenti extra (impostati dalle app multimediali con il metodoPlaybackStateCompat.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 unPendingIntentda attivare quando l'utente fa clic sul pulsante menzionato sopra. QuestoPendingIntentrimanda a un'attività di accesso personalizzata implementata dalla stessa app multimediale.
-
-
Lo stato
PlaybackStateè uguale aSTATE_ERROR. Ciò indica che non è possibile eseguire altre operazioni finché l'accesso non viene completato.