2013-08-19 3 views
5

Quando si registra MinimalMediaRouteProvider/MediaRouteButton da Androids Chromecast SDK, viene visualizzata una finestra di dialogo standard per la connessione ai dispositivi Cromecast esistenti. Una volta connesso al dispositivo, la stessa finestra di dialogo fornisce anche un modo per impostare il volume utilizzando una barra di ricerca trascinabile. Ho difficoltà a sincronizzare la posizione di questa barra di ricerca del volume con il volume effettivo già impostato nel dispositivo Chromecast.Come aggiornare l'indicatore del volume fornito da MinimalMediaRouteProvider

Come parte della registrazione di MinimalMediaRouteProvider forniamo un'implementazione com.google.cast.MediaRouteAdapter. Il onSetVolume (volume) di questa interfaccia viene chiamato quando l'utente trascina il volume seekBar sopra. Questo ci dà un modo divino per aggiornare il livello del volume del canale chromecast connesso utilizzando messageStream.setVolume (volume).

Il problema è che una volta che aggiorniamo il volume, non c'è modo di raccontare di nuovo la MinimalMediaRouteProvider interfaccia utente che il volume è cambiato in modo che possa posizionarsi di conseguenza - al momento si mostra sempre il volume come 0.

Cosa è il modo corretto per notificare a MinimalMediaRouteProvider il livello di volume corrente in modo che possa aggiornare l'interfaccia utente del volume?

Guardando l'esempio di MediaRoute incluso con la libreria di supporto 7, sembra esserci un modo per creare MediaRouteDescriptor, aggiornare il volume lì e quindi comunicare questo a MediaRouteProvider, ma ma non è molto chiaro come farlo in il contenuto di Chromecast/MinimalMediaRouteProvider.

risposta

0

Per ottenere il volume immediatamente dalla VideoCastManager:

mVolume = (int) (mCastManager.getVolume() * 100) // cast volume is double 

Per ricevere basati sul sistema variazioni di volume nel ricevitore (cioè il cursore del volume sullo schermo pop-up, altri dispositivi collegati che cambiano il volume), è necessario aggiungere un utente cast nell'attività del controller:

private VideoCastConsumerImpl mCastConsumer = new VideoCastConsumerImpl() { 

    public void onVolumeChanged(double volume, boolean isMute) 
    { 
     mVolumeSeekBar.setProgress((int) (volume *100)); 
    } 
}; 

Per maggiori dettagli:

Android Sender App Development (Aug '14)