2011-08-10 23 views
5

Bir kullanıcı bir şey cihaza bir şey yapana kadar aynı videoda döngü yapmaya devam edecek bir VideoView ile bir uygulama var (dokunmatik ekran, vb) Şu anda video başlatmak için OnCompletionListener() kullanıyorum bir kez biter. Bu, Samsung Replenish hariç, test ettiğim her cihazda düzgün çalışıyor. Doldurmak ne olurVideoView döngü videoları Yeniden Yayımla

mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     public void onCompletion(MediaPlayer mp) { 
      mVideoView.setVideoPath(file.getAbsolutePath()); 
      mVideoView.start(); 
     } 
    }); 

video bir kez tüm yol boyunca oynar ama sonra tekrar başladı asla ve ekran (hala açık Ama arka ışık) tüm siyah gider geçerli:

İşte benim kodudur. Aynı kodla test ettiğim diğer her cihazda, videoyu tekrarlamak için çalıştı. Bu hataya neden olabilecek Yeniliğe özel bir şey bilen var mı? Belki deVideoPath() 'ı ayarlama çağrılarını erteleyebileceğimi düşündüm ve 200-300 msnce başlamasına() başlamasına yardımcı olabileceğini düşündüm, ancak bunun hiçbir etkisi yoktu. Burada gerçekten bir kayıp yaşıyorum. Benim Günlüğü'nde bu mesajları görüyorum

:

HATA/QCvdec (87): vdec henüz başlatılmadı zamanlarda çıkartılmış Flush OMX.

HATA/QCvdec (87): OMXCORE-SM: Recieved komut DISABLE (2)

HATA/QCvdec (87): vdec henüz başlatılmamış değilken verilen yıkayın OMX.

HATA/QCvdec (87): OMXCORE-SM: Recieved komut ENABLE (3)

Ama bu günlükleri oluyor hem video başladığında (oynatıldığı ilk kez) ve başarısız başlatmak için zaman tekrar. bu yüzden onlar benim sorununa ilişkin ise emin değilim

Düzenleme:

Sadece null mVideoView ayarlayarak ve ardından sağ setVideoPath önce() findViewById ile kendisine yeni bir başvuru alma denedi(). Bunun, OnCompletionListener'ın kurulma şeklini karmaşık hale getireceğini biliyorum. Ama ne olursa olsun yine de işe yaramadı, yine aynı karanlık ekran.

Düzenleme 2:

Hatta ilk kez başlamaz bazen video fark başladım.

 mVideoView.setVideoPath(file.getAbsolutePath()); 
     mVideoView.start(); 

Daha consistantly başlamak gibi görünüyor, ama ilk kez oldukça% 100 yürütülürken: Ben ilk defa olarak başlaması için bu aynı iki satır kullanıyorum.

Düzenleme 3: Şimdi nasıl kurduğum budur. Videoyu benim için başlatmak için OnPreparedListener'ı manuel olarak ayarlıyorum.

mVideoView.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
    public void onCompletion(MediaPlayer mp) { 
     mVideoView.setVideoPath(file.getAbsolutePath()); 

    } 
}); 

Bu görünüyor yapıyor: Ben

 mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 

      @Override 
      public void onPrepared(MediaPlayer arg0) { 
       mVideoView.start(); 
      } 
     }); 

Bu gibi ben sadece sadece setVideoPath() yöntemini çağırın video yeniden başlamaya hazır olduğumda Sonra onCreate() bu ilave Numara. Emin olmak için bir süreliğine koşmasına izin veriyorum.

Düzenleme 4: VideoView setVideoPath() için kod

@MByD setVideoUri için bir sarıcı(). setVideoURI() mStartWhenPrepared = false; ayarlanıyor Varsayılan OnPreparedListener, oynatmayı başlatıp başlatmamaya karar vermek için bu anahtarı kontrol eder. Bu yüzden varsayılan dinleyici ile başlamıyor. Buna daha fazla bakmadım, ancak mStartWhenPrepared değerini true değerine dönüştürmemi sağlayan bir ayarlayıcı yöntem olabilir, bu da videonun varsayılan dinleyiciden başlatılmasına neden olur.

+0

İlginç bir soru. – PedroAGSantos

cevap

3

Videonuzu çağırmadan önce() videosu hazırlamaya çalıştınız. dokümanlardan

: ne zaman hazır bir OnPreparedListener ile http://developer.android.com/reference/android/media/MediaPlayer.html#prepare%28%29

videonuzu başlayabilirsiniz.

+0

VideoView kullanırken hazırlamanız gerekmez. – MByD

+0

hazırlamak, VideoView değil MediaPlayer için bir yöntemdir. VideoView, temelde MediaPlayer'ı setVideoPath() yönteminin bir parçası olarak hazırlamayı çağırdığını varsayalım. Hazırlanan dinleyici, ihtiyacım olan şey olabilir. Şimdi bununla test ediyorum ve daha iyi görünüyor. Her şey yolunda giderse doğru cevabı alacaksınız. Teşekkürler – FoamyGuy

İlgili konular