2012-11-23 2 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()를 호출하지 마십시오, 당신의 활동을 만들 때 재생을 시작하는 플레이어가 발생합니다. 해당 메서드에서 개체 만 인스턴스화해야합니다.
  • CountDownTimer의 모든 틱에서 player_test.start()으로 전화하지 마십시오. 게임을 시작하려면 한 번만 호출하면됩니다.

버튼 A 또는 B 중 하나를 클릭 할 때마다 player_test.start()으로 전화하십시오.

+0

감사합니다. – RedaLe

관련 문제