1

これが私が達成しようとしていることです: ユーザーが「ボタン A」を押すと、30 秒間の「sound.mp3」が 200 秒間何度も再生されてから停止します。「ボタンB」は同じ音を400秒間再生して停止します。これが私の最後の試みです。

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

回答ありがとうございます。

4

1 に答える 1

2

良いアプローチです。ただし、コードのいくつかの点を修正する必要があります。

  • メソッドを呼び出さないplayer_test.start()でくださいmy_player()。アクティビティが作成されたときにプレーヤーの再生が開始されます。player_testそのメソッドでのみオブジェクトをインスタンス化する必要があります。
  • player_test.start()のすべてのティックを呼び出さないでくださいCountDownTimer。再生を開始するには、1 回呼び出すだけです。

player_test.start()ボタン A または B のいずれかがクリックされるたびに呼び出します。

于 2012-11-23T01:04:08.097 に答える