2012-11-23 1 views
1

Voici ce que j'essaie de réaliser: Lorsque l'utilisateur appuie sur le bouton "A", un "sound.mp3" de 30 secondes recommence à jouer pendant 200 secondes puis s'arrête. "Bouton B" joue le même son pendant 400 secondes et s'arrête. Voici ma dernière tentative, en utilisant CountDownTimer (pas sûr si c'est la meilleure approche ou même possible):Comment lire de manière répétée le même son pendant une durée donnée?

public class MyClass extends Activity { 

MediaPlayer player_test; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_rain); 
    my_player(); 
} 


public void my_player(){ 
     player_test = MediaPlayer.create(getApplicationContext(), R.raw.mysound); 
     player_test.setLooping(true); 
     player_test.start(); 
    } 


public void onCompletion(MediaPlayer player_test) { 
     player_test.stop(); 
      player_test.release(); 
     } 
});   



public void player_OnClick(View v) { 

    switch (v.getId()) { 
    case R.id.button_a: 
      new CountDownTimer(200000, 1000) {  
       public void onTick(long millisUntilFinished) { 
        player_test.start(); 
       }  
       public void onFinish() {   
        player_test.pause(); 
       } 
      }.start(); 
     break; 
     case R.id.button_b: 
      new CountDownTimer(400000, 1000) {  
      public void onTick(long millisUntilFinished) { 
       player_test.start();  
      }  
      public void onFinish() {   
      player_test.pause(); } 
     }.start(); 
    break; 
     } 
} 

Merci pour vos réponses.

Répondre

2

C'est une bonne approche. Cependant, vous devez corriger certains points dans votre code:

  • Ne pas appeler player_test.start() dans votre méthode my_player(), il provoque le joueur de commencer à jouer lorsque votre activité est créée. Vous devez uniquement instancier l'objet player_test dans cette méthode.
  • N'appelez pas player_test.start() dans chaque tick du CountDownTimer. Vous avez seulement besoin de l'appeler une fois pour commencer à jouer.

Appelez player_test.start() chaque fois que l'un des boutons A ou B est cliqué.

+0

Merci, cela a fonctionné. – RedaLe

Questions connexes