Implementare la radio con Media

L'interfaccia utente della radio è implementata come app indipendente. Per istruzioni su come integrare un'interfaccia utente della radio nell'hardware della radio, consulta Implementare la radio.

La sezione seguente descrive come integrare l'interfaccia utente della radio con Media per offrire agli utenti un'esperienza fluida che consenta loro di interagire con le sorgenti multimediali e la radio come se fossero un'unica app.

Flusso utente per il cambio di sorgente multimediale

Il seguente diagramma illustra come l'implementazione di riferimento di Radio e Media implementa il flusso utente per il cambio di app.

Flusso utente di cambio sorgente media

Figura 1. Flusso utente per il cambio di sorgente multimediale

Per fornire una transizione fluida tra Radio e altre app in Media, la libreria car-media-common definisce gli intent Android che possono essere utilizzati per avviare un selettore di sorgenti multimediali. In AOSP, questo selettore è implementato nel launcher app e presenta la stessa UI per l'avvio delle app, ma filtrata per mostrare solo le sorgenti multimediali.

Gli OEM possono scegliere di utilizzare l'implementazione corrente del launcher app così com'è o di implementare un selettore di sorgenti multimediali personalizzato.

Il selettore può operare in due modalità:

  • Flusso normale. Dopo aver utilizzato il selettore, la sorgente selezionata viene visualizzata in Media in modo che l'utente possa sfogliarne i contenuti.
  • Come interruttore. Un selettore viene utilizzato per cambiare le sorgenti, ma i contenuti multimediali non vengono visualizzati dall'utente. Questo vale per l'icona del selettore nella home page. Dopo aver selezionato una sorgente, la schermata precedente più recente viene mostrata all'utente (in questo caso, la home page).

L'intent utilizzato per passare da una sorgente multimediale all'altra può essere ottenuto dal metodo MediaSource#getSourceSelectorIntent(), che accetta un valore booleano popup che restituisce un intent per avviare ciascuno dei flussi descritti sopra.

Gli intent effettivi sono definiti in packages/apps/Car/libs/car-media-common/res/values/config.xml. Per personalizzare questa configurazione, utilizza le sovrapposizioni in fase di compilazione.

Sostituire l'app Radio

Poiché l'app Radio implementa Media Browse e Media Session, viene visualizzata nel launcher app. Per impedire l'avvio di Media quando un utente fa clic sull'icona, sono necessari due elementi. La radio deve:

  • Avere un'attività di avvio.
  • Essere dichiarata come sorgente personalizzata. Per farlo, aggiungi il nome del componente alla custom_media_packages chiave in car-media-common/res/values/config.xml.

Limitazioni della UX durante la guida

Media deve rispettare tutte le limitazioni della UX per la distrazione durante la guida. Per farlo, Media deve ascoltare il CarUXRestrictionManager e implementare tutte le relative norme.