2010-04-25 4 views
1

Je sais que vous pouvez « seekTo() » avec Mediaplayer ... (Pour commencer à un certain point)Arrêt d'une piste (à un certain point) sur Android

Mais personne ne sait s'il y a un moyen de faire une piste (la lecture audio) ... Arrêter à un certain point? -ou une instruction if sur une boucle de minuterie doit-elle être utilisée?

S'il vous plaît aider ...

Merci beaucoup,

James

Répondre

0

Vous devez générer une menace qui déclenchera getCurrentPosition(). Lorsqu'il atteint le point d'arrêt, vous devez arrêter MediaPlayer.

public void run() { 
    while (mp != null && mPosition < mTotal) { 
     try { 
      Thread.sleep(500); // you can modify sleep time for better accuracy 
      if (mp.isPlaying()) { 
       mPosition = mp.getCurrentPosition(); 
       if (mPosition == mYourStopPoint) { //remember to set mYourStopPoint 
        mp.stop(); 
        break; 
       } 
      } 
     } catch (InterruptedException e) { 
      return; 
     } catch (Exception e) { 
      return; 
     } 

    } 
} 

Commencer ce sujet dans le rappel onPreapared.

public void onPrepared(MediaPlayer genericPlayer) { 
    mTotal = mp.getDuration(); 
    new Thread(this).start(); 
} 
1

ne semble pas possible (me corriger si je me trompe) de le faire avec lecteur multimédia sans avoir recours à seekTo () dans une boucle de minuterie. Cependant, vous pouvez essayer d'utiliser un AudioTrack conjointement avec la fixation d'un marqueur de notification:

AudioTrack.setNotificationMarkerPosition

Définit la position du marqueur de notification.

et en remplaçant la mise à jour la position de lecture écoute AudioTrack.OnPlaybackPositionUpdateListener

définition d'interface pour un rappel à invoquer lorsque la position de la tête de lecture d'un AudioTrack a atteint un marqueur de notification ou a augmenté d'une certaine période.

+0

Je vais essayer une boucle de minuterie, =] Je ne suis pas beaucoup dans effiency, mais je devine une boucle de minuterie est inefficace? : P :) –

+0

Je dirais que c'était plus désordonné plus que inefficace, probablement ne ralentira pas sensiblement l'application. – stealthcopter

Questions connexes