1

トグルボタンで曲を再生しようとしていますが、遅れています。ユーザーは、遅延を設定するために使用される数値フィールド(パレット/テキストフィールド/数値)に分を入力する必要があります。Android開発者向けのリソースを確認しましたが、どこから始めればよいのかまだわかりません。

現在私はこれを持っています:

public class Main extends Activity {

MediaPlayer mp;
Button startButton;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.main);
    mp = MediaPlayer.create(getBaseContext(), R.raw.songthingy);

    ToggleButton toggle = (ToggleButton) findViewById(R.id.ToggleButton);
    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
                mp.start();
            } else {
                mp.stop();
            }
        }
    });

    mp.setOnCompletionListener(new OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });

}
4

1 に答える 1

2

優れたメソッドはHandler.postDelayです。アクションを実行可能にして、それらのメソッドのparamsに渡す必要があります。その後、指定された時間の後に実行されます。

アップデート:

   private Runnable doStuff= new Runnable() {
//Notice doStuff is a member of the class.
            public void run() {
               //do awesome stuff here.
             mp.start();
            }
        };
//...
 toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        public void onCheckedChanged(CompoundButton buttonView,
                boolean isChecked) {
            if (isChecked) {
             final Handler mHandler= new Handler();
                mHandler.postDelayed(doStuff,1000*30);//30 second delay.
            } else {
                mp.stop();
            }
        }

あなたはグーグルでこれを使う方法の例を見ることができます。あなたのコードはこのように見えるかもしれませんが、このコードは箱から出して実行されません。スコープを修正し、要件を満たす必要があります。

于 2013-02-04T21:48:36.080 に答える