7

Ben belirledik:Android: Media Player Süre Sayı

mSeekBar.setMax(mp.getDuration()); // 8480 

Audiofile tamamlanmasından sonra, ne alıyorum geçerli: Yani

player.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        public void onCompletion(MediaPlayer mediaPlayer) 
        { 
         Log.e("onComplete>>", ""+mediaPlayer.getCurrentPosition()); 

         // mediaPlayer.getCurrentPosition() = 8192 

         Log.e("getDuration", ""+mediaPlayer.getDuration()); 

         // mediaPlayer.getDuration() = 8480 

         if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration()) 
         { 
          // Why never get called??? 
         } 
        } 
       }); 

, niye MediaPlayer en Güncel pozisyon toplam ulaşır asla Ses dosyasının süresi?

Ya teknik söyleyebiliriz olarak:

Neden değil?

mediaPlayer.getCurrentPosition()==mediaPlayer.getDuration() 

Neden daima

mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration() OnCompletion dinleyici içinde ? Örnek için

:

Ben Player'ı başlatmak için Çal Simge var. Şimdi sembolüne bastığımda Pause Pause simgesine dönüşecektir.

Ses düzeltme ek bilgim var.

Şimdi Ses dosyası tamamen oynatıldığında Oynat Sembol için Pause sembolü dönüştürmek istiyorum. Eğer süresine currentPoision işaretleyerek tamamlanması bazı görev yapmak gerekirse, hile altında yapabilirsiniz

if(mediaPlayer.getCurrentPosition()>=mediaPlayer.getDuration()) 
{ 
     // Convert Imagview from Pause to Play  
     // But never get called     
} 
+0

Log.i 'çıktısı nedir SO ne yapıyorum denetleme olduğunu ("onComplete >>", "" + mediaPlayer.getCurrentPosition()); Log.i ("getDuration", "" + mediaPlayer.getDuration()); –

+0

Geçerli konum her zaman GetDuration öğesinden daha azdır. –

+1

Hmm .. Aynı konu için bir [sorun iş parçacığı] (https://code.google.com/p/android/issues/detail?id=38627) buldum, ancak henüz bir çözüm veya açıklama bulamadı mı bilmiyorum. ve ayrıca bu (http://www.anddev.org/multimedia-problems-f28/mediaplayer-getcurrentposition-t20032.html). –

cevap

0

:

if(mediaPlayer.getDuration()-mediaPlayer.getCurrentPosition()<1000){//milliseconds 
    new Handler().postDelayed(
    new Runnable() { 
     @Override 
     public void run() { 
      // Convert Imageview from Pause to Play  
     } 
    },1000); 
} 
İlgili konular