开始接触主线程和子线程之后觉得不应该在主线程中实现用户登录、语音识别还有合成这诸多工作,因为人们都说需要联网的工作最好另起新的线程。而且我调用语音包的程序跑起来也很复杂,所以本文就将介绍如何另起新线程运行语音识别。
关于前期准备工作参见前一篇博文
启动新的子线程主要要完成两个功能,一个是在子线程中定义如何运行自己的程序,第二个就是子线程完成了识别工作要及时通知主线程(又叫UI线程)以更新界面。
我的OutputActivity
public class OutputActivity extends Activity {
private static final int ASK_USER_INPUT = 1;
// Tip
private Toast mToast;
//语义理解结果显示
private EditText mResultText;
ClawnThread CoreThread = null;
// Handler object
private Handler MainHandler=new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case ASK_USER_INPUT:
mResultText.append(msg.obj.toString());
//showSpeechUnderstanderNoPop();
Log.e("haha","called");
break;
}
}
};
class ClawnThread extends Thread{
public