2012-06-25 19 views
17

È possibile ottenere un riferimento all'istanza di mediaPlayer utilizzata da VideoView, preferibilmente all'interno del suo ctor? Se é cosi, come?Ottieni il mediaPlayer del videoView in Android

Poiché la visualizzazione video non ha tanti ascoltatori come MediaPlayer, mi piacerebbe avere la possibilità di raggiungere MediaPlayer per un maggiore controllo e una migliore gestione degli eventi.

+0

Probabilmente è possibile farlo tramite [reflection] (http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html). La riflessione – yorkw

+0

è troppo confusa e troppo pericolosa. è possibile estendere il videoView e ottenere il mediaPlayer lì invece? –

risposta

12

puoi ascoltare da VideoView.

VideoView mVideoView=new VideoView(); 
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
    @Override 
    public void onPrepared(MediaPlayer pMp) { 
    //use a global variable to get the object 
    } 
}); 

In alternativa, se siete interessati a Media Player Eventi solo è possibile utilizzare uno di questi e questi sono implementati su VideoView e questi sono fondamentalmente eventi MediaPlayer.

void setOnCompletionListener(MediaPlayer.OnCompletionListener l) 
void setOnErrorListener(MediaPlayer.OnErrorListener l) 
void setOnInfoListener(MediaPlayer.OnInfoListener l) 
void setOnPreparedListener(MediaPlayer.OnPreparedListener l) 

Tutte queste funzioni forniranno anche un'istanza di Media Player.

+0

anche se ho fatto questa domanda molto tempo fa, ricordo quello che volevo: un sacco di controllo e di essere informato di tutti gli eventi in questa vista: eventi di stato di riproduzione (pausa, avvio, arresto, ricerca), eventi di errore, stato di buffering, ecc ... mediaPlayer ha tutti questi (anche se non sono sicuro di come funzionano e come), tuttavia VideoView ne ha solo alcuni. –

+0

Gli eventi su VideoView (ad esempio setOnInfoListener (MediaPlayer.OnInfoListener l)) sono disponibili solo dal livello API 17, quindi cosa succede se voglio supportare per abbassare i livelli API? –

+0

È possibile impostareOnInfoListener dell'oggetto trovato MediaPlayer. Disponibile> API 3. –

Problemi correlati