2010-06-16 24 views
5

Özel bir video oynatıcı kullanıyorum çünkü özel video denetimlerine ihtiyacım var. Başlangıçta hemen bir video oynatmaya başlayacak olan tek bir etkinliğe sahip bir uygulamanız var. Ben Video baştan başlamak istemiyorumMediaplayer ve seekTo ile garip davranış

, ancak daha sonra pozisyondan:

Şimdi, sahip sorundur. Bu yüzden bir seekTo (16867) yapıyorum. SeekTo eşzamansız olduğundan, mediaplayer'ın (player.start()) start çağrısını onSeekCompleteListener'ın onSeekComplete'sine yerleştiririm.

olsa yaşamaya garip davranışlar G/bkz aslında ben seeked pozisyona atlar/dan çalış önce birkaç mili saniye için baştan oynayan videoyu duyabiliyorum olmasıdır. Ama - diğer yandan - player.start, aramak istediğim doğru konumu 16867 döndürmeden önce aradığım Log çıkışı. Aşağıda

ilgili kod bölümüdür, komple sınıf http://pastebin.com/jqAAFsuX

Ben de herhangi bir cevap almadıysanız beri

private void playVideo(String url) { 
    try { 
     btnVideoPause.setEnabled(false); 
     if (player==null) { 
      player=new MediaPlayer(); 
      player.setScreenOnWhilePlaying(true); 
     } 
     else { 
      player.stop(); 
      player.reset(); 
     } 
     url = "/sdcard/myapp/main/videos/main.mp4"; // <--- just for test purposes hardcoded here now  
     player.setDataSource(url); 
     player.setDisplay(holder); 
     player.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     player.setOnCompletionListener(this); 
     player.setOnPreparedListener(this); 

     player.setOnSeekCompleteListener(new MediaPlayer.OnSeekCompleteListener() { 
      public void onSeekComplete(MediaPlayer mediaPlayer) { 
        Log.d("APP", "current pos... "+ player.getCurrentPosition()); 
        player.start();   // <------------------ start video on seek completed 
        player.setOnSeekCompleteListener(null); 
       } 
     });    
     player.prepareAsync(); 
    } 
    catch (Throwable t) { 
     Log.e(TAG, "Exception in btnVideoPause prep", t); 
    } 
} 

public void onPrepared(MediaPlayer mediaplayer) { 
    width=player.getVideoWidth(); 
    height=player.getVideoHeight(); 
    if (width!=0 && height!=0) { 
     holder.setFixedSize(width, height); 
     progressBar.setProgress(0); 
     progressBar.setMax(player.getDuration()); 
     player.seekTo(16867);     // <------------------ seeking to position 
    } 
    btnVideoPause.setEnabled(true); 
} 
+0

adresinden bir hata raporu hazırladım: Kendi medya oynatıcım + yüzey uygulaması yerine SDK'nın Video Görünümünü kullanırken aynı şeyi yaşıyorum. Ayrıca bir seekTo sağlar rağmen VideoView neden bir setOnSeekCompletionListener sağladığını merak ediyorum. Arayıp async de değil mi? –

+0

Hata raporunu http://code.google.com/p/android/issues/detail?id=9135 –

+0

adresinden giderdi. Şimdiye kadar geçici çözümlerle ilgili herhangi bir şans var mı? 2 yıldır biliyorum ama bu şimdi beni rahatsız ediyor app – Slartibartfast

cevap

İlgili konular