我正试图让一个切换按钮播放一首歌但延迟了。用户必须将分钟输入到数字字段(调色板/文本字段/数字)中,该字段将用于设置延迟。我已经检查了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();
}
});
}
答案 0 :(得分:2)
一个好方法是Handler.postDelay。你必须让你的动作成为Runnable,并将它传递给它们的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();
}
}
您可以在谷歌周围查看如何使用它的示例。您的代码可能看起来像这样,但此代码不会开箱即用。你必须修复范围并满足你的要求。