如何在特定时间内重复播放相同的声音?

时间:2012-11-23 00:52:29

标签: android android-mediaplayer countdowntimer

这就是我想要实现的目标:当用户按下“按钮A”时,30秒“sound.mp3”开始反复播放200秒然后停止。 “按钮B”播放相同的声音400秒并停止。 这是我的最后一次尝试,使用CountDownTimer(不确定这是最好的方法,甚至可能):

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

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

这是一个很好的方法。但是,您应该在代码中修复一些要点:

  • 请勿在{{1​​}}方法中调用player_test.start(),这会导致玩家在创建活动时开始播放。您应该只在该方法中实例化my_player()对象。
  • 请勿在{{1​​}}的每个刻度中致电player_test。你只需要打电话一次就可以开始玩了。

点击任何按钮A或B时,请致电player_test.start()