Android提供了自动朗读支持。自动朗读支持可以对指定文本内容进行朗读,从而发生声音;不仅如此,Android的自动朗读支持还允许把文本对应的音频录制成音频文件,方便以后播放。这种自动朗读支持的英文名称为TextToSpeech,简称TTS。

     借助于TTS的支持,可以在应用程序中动态地增加音频输出,从而改善用户体验。     Android的自动朗读支持主要通过TextTospeech来完成,该累提供了如下一个构造器:

TextTospeech(Context context, TextTospeech.OnInitListenerlistener)

     从上面的构造器不难看书,当创建TextTospeech对象时,必须先提供一个OnInitListener监听器——该监听器负责监听TextTospeech的初始化结果。     一旦在程序中获得了TextTospeech对象之后,接下来可以调用TextTospeech的setLanguage(Localeloc)方法来设置该TTS发声引擎应使用的语言、国家选项。     如果调用setLanguage(Localeloc)的返回值是“TextToSpeech.LANG_COUNTRY_AVAILABLE”说明当前TTS系统可以支持所设置的语言、国家选项。     对TextToSpeech设置完成后,就可以调用它的方法来朗读文本了,具体方法可参考TextToSpeech的API文档。TextToSpeech类中最常用的方法是如下两个。

n speak(String text,int queueMode,HashMap

Speech.java  public class Speech extends Activity  {      TextToSpeech tts;      EditText editText;      Button speech;      Button record;      @Override      public void onCreate(Bundle savedInstanceState)      {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          // 初始化TextToSpeech对象          tts = new TextToSpeech(this, new OnInitListener()          {              @Override              public void onInit(int status)              {                  // 如果装载TTS引擎成功                  if (status == TextToSpeech.SUCCESS)                  {                      // 设置使用美式英语朗读                      int result = tts.setLanguage(Locale.US);                      // 如果不支持所设置的语言                      if (result != TextToSpeech.LANG_COUNTRY_AVAILABLE                          && result != TextToSpeech.LANG_AVAILABLE)                      {                          Toast.makeText(Speech.this, "TTS暂时不支持这种语言的朗读。", 50000)                              .show();                      }                  }              }          });          editText = (EditText) findViewById(R.id.txt);          speech = (Button) findViewById(R.id.speech);          record = (Button) findViewById(R.id.record);          speech.setOnClickListener(new OnClickListener()          {              @Override              public void onClick(View arg0)              {                  // 执行朗读                  tts.speak(editText.getText().toString(),                      TextToSpeech.QUEUE_ADD, null);              }          });          record.setOnClickListener(new OnClickListener()          {              @Override              public void onClick(View arg0)              {                  // 将朗读文本的音频记录到指定文件                  tts.synthesizeToFile(editText.getText().toString(), null,   "/mnt/sdcard/sound.wav");                  Toast.makeText(Speech.this, "声音记录成功!", 50000).show();              }          });      }      @Override      public void onDestroy()      {          // 关闭TextToSpeech对象          if (tts != null)          {              tts.shutdown();          }      }  } 

上面的程序第一行粗体字代码设置创建了一个TextToSpeech对象,第二行粗体字使用美式英语进行英语朗读。接下来程序分别体统了两个按钮,一个按钮用于执行朗读发生,一个按钮用于将文本内容朗读音频保存成声音文件,分别通过调用TextToSpeech对象的两个方法完成。

运行程序,可以看到下图界面。

在界面中,当用户点击“朗读”按钮后,系统将会调用TTS的speak()方法来朗读文本框的内容;当用户单击“记录声音”按钮后,系统会调用synthesizeToFile()方法把文本框中的文本对应的朗读音频记录到SD卡的声音文件中——单击该按钮后将可以在SD卡的根目录下生成一个sound.wav文件,该文件可以被导出,在其他音频播放软件中播放。

程序重写Activity的onDestroy()方法,并在该方法中关闭了TextToSpeech对象,回收了它的资源。

文本内容自动朗读_第1张图片

提示:由于不同的文字,在不同的语言、国家中的发音是不同的,尤其是欧美,它们所使用的都是字母文字,因此一段文本内容,使用不同的语言、国家选项来朗读,发音效果是截然不同的。目前Android的TTS暂时不支持中文。

转载:http://blog.csdn.net/pku_android/article/details/7574582

更多相关文章

  1. Android中的Button自定义点击效果之改变点击时按钮的颜色
  2. Android自定义控件——仿ios开关按钮
  3. Android -- Button(按钮)的几种监听方式
  4. android 自定义带关闭按钮的dialog
  5. Android中TextView文本过长滚动显示实现
  6. android中能不能new Activity()对象引发的思考
  7. android 使用socket与pc传递对象的问题
  8. Android中获取文本宽度和高度

随机推荐

  1. Android的Handler Looper Message机制应
  2. android移植 十之一 lcd课题
  3. 掌握Android中的进程和线程
  4. Android自定义控件——仿ios开关按钮
  5. Android(安卓)获取ROOT权限原理解析
  6. Android(安卓)Studio配置Flutter遇到的问
  7. Android(安卓)intent消息通知机制
  8. Android(安卓)实现记住用户名和密码的功
  9. Android入门
  10. Google 发布 Android(安卓)Design 网站