如何在android中等待按钮点击一段时间
我正在开发一个盲人应用程序 我有4个屏幕大小的按钮(重叠)。程序的每个步骤都有一个按钮可点击,每个按钮都有多个作业 我的程序以语音(Android TTS引擎)开始。比如“请触摸屏做x”。在这一步之后,我想等待3秒钟按钮点击,如果按钮没有点击,发声“请触摸屏做y”,并再次等待3秒钟作业y。(x和y是第一个按钮的作业) 按钮应根据触摸屏进行其中一项操作。但我怎么能等3秒钟按钮点击,然后继续发声下一个选项,然后再等3秒钟呢如何在android中等待按钮点击一段时间,android,multithreading,algorithm,button,text-to-speech,Android,Multithreading,Algorithm,Button,Text To Speech,我正在开发一个盲人应用程序 我有4个屏幕大小的按钮(重叠)。程序的每个步骤都有一个按钮可点击,每个按钮都有多个作业 我的程序以语音(Android TTS引擎)开始。比如“请触摸屏做x”。在这一步之后,我想等待3秒钟按钮点击,如果按钮没有点击,发声“请触摸屏做y”,并再次等待3秒钟作业y。(x和y是第一个按钮的作业) 按钮应根据触摸屏进行其中一项操作。但我怎么能等3秒钟按钮点击,然后继续发声下一个选项,然后再等3秒钟呢 如果单击第一个按钮,它将消失。按钮2将可单击-TTS引擎将开始发声第二个按钮
如果单击第一个按钮,它将消失。按钮2将可单击-TTS引擎将开始发声第二个按钮选项。应用程序将像这样工作,但我被困在等待按钮点击部分。您可以通过繁忙的等待解决您的问题。 因此,在您第一次发声“请触摸屏…”之后,您将启动一个后台线程,等待特定的时间,如下所示:
new Thread(new Runnable() {
public void run() {
Thread.sleep(3000);
runOnUiThread(new Runnable() {
@Override
public void run() {
//vocalize
}
});
}
}).start();
正如您所看到的,从线程内部,3秒钟后将启动一个新的runnable,它将再次在UI线程上运行。这是因为我想我记得你应该只从UI线程发出声音(取决于你播放文件/声音的方法)
然而,这只是一个想法,我无法测试运行我的代码!
但我希望我启发了你
问候
Me我建议您改用android.os.Handler。在您的情况下,您可以这样做:
public void onCreate() {
this.handler = new Handler()
playTheVoiceOfThingX()
viewToTap.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
doThingX();
}
});
handler.postDelayed(new PrepareThingYTask(), 3000);
}
class PrepareThingYTask() implements Runnable {
viewToTap.setOnClickListener(new OnClickListener(){
@Override
public void onClick() {
doThingY();
}
});
handler.postDelayed(new PrepareThingZTask(), 3000);
}
class PrepareThingZTask() implements Runnable {
....
}
一个很好的提醒,处理程序执行的runnable可以在UIThread中执行,因此不需要对其进行繁重的工作,或者创建一个不同的循环器来运行它
问候做一个练习。单击取消它。