80,337
社区成员
发帖
与我相关
我的任务
分享
package com.example.tts_thread;
import java.util.Locale;
import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.widget.Toast;
public class MyThread extends Thread {
Context context;
//要阅读的文本内容
private StringBuilder talkText =new StringBuilder("what are talking about");
//实例化一个TTS对象
//private TextToSpeech mSpeech = null;
MyThread(Context context){
this.context =context;
}
@Override
public void run() {
Message message = new Message();
message.what =1;
handler.sendMessage(message); //将Message对象发送出去
}
//-----------使用Handler来调用UI线程的资源,包括context(还有一种方法的嘛,还没入档)------------------------------------
private Handler handler = new Handler(){ //Handler对象是什么,作用是什么?
public void handleMessage(Message msg) //重写父类方法
{
if(msg.what==1)
{
Looper.prepare();
TextToSpeech mSpeech = new TextToSpeech(context, new TTSListener());
//语音朗读出文本框中的内容
mSpeech.speak(talkText.toString(), TextToSpeech.QUEUE_FLUSH, null);
mSpeech.setLanguage(Locale.US);
Toast.makeText(context,talkText.toString(), Toast.LENGTH_LONG).show();
Looper.loop();
}
}
};
//-----------------------------------------------
//---------内部类:TTS实例------------------
//实现一个初始化接口,实例化TTS对象时需要这个监听器来触发onInit事件(作为构造函数中的参数)
private class TTSListener implements OnInitListener {
@Override
public void onInit(int status) {
}
}
//---------------------------------------------
}