2012-06-25 6 views
17

Ist es möglich, einen Verweis auf die MediaPlayer-Instanz zu erhalten, die das VideoView verwendet, vorzugsweise direkt in seinem ctor? Wenn das so ist, wie?Erhalten Sie den MediaPlayer des videoView in Android

Da das videoView nicht so viele Listener wie der mediaPlayer hat, würde ich gerne den mediaPlayer für zusätzliche Kontrolle und bessere Ereignisbehandlung erreichen können.

+0

Sie können es wahrscheinlich über [Reflexion] tun (http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html). – yorkw

+0

Reflexion ist zu unordentlich und zu gefährlich. ist es möglich, die videoView zu erweitern und stattdessen den mediaPlayer zu bekommen? –

Antwort

12

können Sie Listener von VideoView.

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

Alternativ, wenn Sie daran interessiert sind nur auf Media Player Events können Sie alle diese verwenden, und diese werden auf Videoview implementiert und diese sind im Grunde Ereignisse Mediaplayer.

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

Alle diese Funktionen geben auch eine Media Player-Instanz.

+0

Obwohl ich diese Frage schon lange gestellt habe, erinnere ich mich daran, was ich wollte: viel Kontrolle und die Benachrichtigung über alle Ereignisse in dieser Ansicht: Wiedergabestatus Ereignisse (Pause, Start, Stopp, Suche), Fehlerereignisse, Pufferstatus, etc ... mediaPlayer hat all diese (obwohl nicht sicher, wie gut sie funktionieren und wie), aber videoView hat nur einige. –

+0

Ereignisse in VideoView (z. B. setOnInfoListener (MediaPlayer.OnInfoListener l)) sind nur ab API-Ebene 17 verfügbar. Was ist, wenn ich API-Ebenen senken möchte? –

+0

Sie könnenOnInfoListener des gefundenen MediaPlayer-Objekts festlegen. Verfügbar> API 3. –

Verwandte Themen