Android中使用TextToSpeech的方法

  public class SpeechActivity extends Activity implements TextToSpeech.OnInitListener {

  private static final String TAG = "SpeechDemo";

  private TextToSpeech mTts;

  private Button mButton;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.text_to_speech);

  //初始化语音。这是一个异步操作。初始化完成后调用oninitListener(第二个参数)。

  mTts = new TextToSpeech(this, this);

  mButton = (Button) findViewById(R.id.again_button);

  //触发

  mButton.setOnClickListener(new View.OnClickListener() {

  public void onClick(View v) {

  sayHello();

  }

  });

  }

  @Override

  public void onDestroy() {

  // 生命周期中结束

  if (mTts != null) {

  mTts.stop();

  mTts.shutdown();

  }

  super.onDestroy();

  }

  // 实现TextToSpeech.OnInitListener.

  public void onInit(int status) {

  if (status == TextToSpeech.SUCCESS) {

  //设置首选语言为中文,注意,语言可能是不可用的,结果将指示此

  int result = mTts.setLanguage(Locale.CHINA);

  if (result == TextToSpeech.LANG_MISSING_DATA ||

  result == TextToSpeech.LANG_NOT_SUPPORTED) {

  //语言数据丢失或不支持该语言。

  Log.e(TAG, "语言数据丢失或不支持该语言");

  } else {

  //检查文档中其他可能的结果代码。

  // 例如,语言可能对区域设置可用,但对指定的国家和变体不可用

  // TTS引擎已成功初始化。

  // 允许用户按下按钮让应用程序再次发言。

  mAgainButton.setEnabled(true);

  }

  } else {

  // 初始化失败

  Log.e(TAG, "初始化失败");

  }

  }

  private void sayHello() {

  String hello ="计蒙不吃鱼";

  //TextToSpeech的speak方法有两个重载。

  // 执行朗读的方法

  //speak(CharSequence text,int queueMode,Bundle params,String utteranceId);

  // 将朗读的的声音记录成音频文件

  //synthesizeToFile(CharSequence text,Bundle params,File file,String utteranceId);

  //第二个参数queueMode用于指定发音队列模式,两种模式选择

  //(1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务

  //(2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后,

  //等前面的语音任务执行完了才会执行新的语音任务

  mTts.speak(hello,

  TextToSpeech.QUEUE_FLUSH,

  null);

  }

  }