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。您必须使您的操作成为可运行的,并将其传递给他们方法的参数。然后它将在给定时间后执行。

更新:

   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 回答