7

I gesetzt haben:Android: Media Player Dauer Ausgabe

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

Nach Beendigung der Audiofile, was ich erhalte ist:

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??? 
         } 
        } 
       }); 

So Warum ist die aktuelle Position der Mediaplayer erreicht nie den Gesamt Dauer der Audiodatei?

oder technisch können wir sagen, wie:

Warum nicht?

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

Warum immer

mediaPlayer.getCurrentPosition() < mediaPlayer.getDuration() in OnCompletion Zuhörer?

Beispiel:

Ich habe ein Wiedergabe Symbol für den Player zu starten. Jetzt, wenn ich spiele Symbol es wird zu Pause Symbol drücken.

Ich habe eine Maxduration von audiodfile.

Jetzt möchte ich Pause Symbol Wiedergabe Symbol, wenn Audio-Datei abgespielt wird, vollständig konvertieren. SO, was ich tue, ist Checking:

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

Was Ausgang ist von 'Log.i ("onComplete >>", "" + mediaPlayer.getCurrentPosition()); Log.i ("getDuration", "" + mediaPlayer.getDuration()); ' –

+0

aktuelle Position ist immer kleiner als GetDuration. –

+1

Hmm .. Ich habe ein [Problemthread] (https://code.google.com/p/android/issues/detail?id=38627) für dasselbe gefunden, weiß aber nicht, ob jemand eine Lösung oder Erklärung gefunden hat. . und [dies] (http://www.anddev.org/multimedia-problems-f28/mediaplayer-getcurrentposition-t20032.html) auch. –

Antwort

0

Wenn Sie durch Prüfen currentPoision auf Dauer eine bestimmte Aufgabe nach Abschluss tun müssen, um Sie unten Trick tun können:

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