2012-06-25 14 views
17

VideoView'un kullandığı mediaPlayer örneğine başvuruda bulunmak için, tercihen onun sağında, tam olarak mümkün mü? Öyleyse nasıl?Android'de videonun mediaPlayer'ını alın

VideoView, mediaPlayer kadar fazla dinleyiciye sahip olmadığı için, ekstra kontrol ve daha iyi etkinlik yönetimi için mediaPlayer'a erişme yeteneğine sahip olmak isterim.

+0

Muhtemelen bunu [yansıma] ile yapabilirsiniz (http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html). – yorkw

+0

yansıması çok dağınık ve çok tehlikeli. VideoView'ı genişletmek ve bunun yerine mediaPlayer'ı almak mümkün mü? –

cevap

12

VideoView'dan dinleyebilirsiniz.

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

Alternatif yalnızca Media Player Olaylar ilgileniyorsanız Bunlardan herhangi birini kullanabilir ve bu VideoView üzerine uygulanır ve bu temelde MediaPlayer olaylardır.

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

Tüm bu işlevler ayrıca bir Media Player örneği de verecektir.

+0

Uzun zaman önce bu soruyu sormuş olsam da, ne istediğimi hatırlıyorum: çok fazla kontrol ve bu görünümdeki tüm olaylardan haberdar edilmek: çalma durumu olayları (duraklama, başlama, durdurma, arama), hata olayları, arabellek durumu, vb ... mediaPlayer bunların hepsine sahiptir (ancak ne kadar iyi çalıştıklarından ve nasıl olduklarından emin değiller), ancak videoView'un sadece bir kısmı vardır. –

+0

VideoView (ör. SetOnInfoListener (MediaPlayer.OnInfoListener l)) olayları yalnızca API seviye 17'den kullanılabilir, bu yüzden daha düşük API düzeylerine destek vermek istiyorsam ne olur? –

+0

Bulunan MediaPlayer nesnesininOnInfoListener öğesini ayarlayabilirsiniz. Kullanılabilir> API 3. –