2012-11-23 52 views
1

下面是我想要實現的:當用戶按下「按鈕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; 
     } 
} 

謝謝您的解答。

回答

2

這是一個很好的方法。然而,你應該在你的代碼修復一些要點:

  • 不要在您的my_player()方法調用player_test.start(),它會導致玩家在創建活動時開始播放。您應該僅在該方法中實例化player_test對象。
  • 不要在CountDownTimer的每個勾號中調用player_test.start()。你只需要撥打一次即可開始播放。

只要點擊任何按鈕A或B,就調用player_test.start()

+0

謝謝,它的工作。 – RedaLe