现在,随着移动应用的日益普及,移动语音应用越来越受到用户的重视和喜爱,本文将指导用户如何在Android SDK中使用语音引擎去创建简单的应用。在Android中使用语音引擎其实是很容易的事情,通过若干步骤就可以实现了,尽管其中有些地方在使用中要注意。在本教程中,将一步步直接教读者如何创建语音应用,具体的代码在文末有下载。

 步骤一 创建Android工程

  我们首先创建一个Android工程,选用的是Android 2.3以上SDK的。

步骤二 创建用户界面

  由于我们的例子很简单,所以只需要往界面中增添若干控件就可以了,我们打开main.xml文件,写入如下代码,增加了一个本文框和一个按钮:

   <TextView android:id="@+id/intro"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="Enter some text:"/> <EditText android:id="@+id/enter"    android:layout_width="fill_parent"    android:layout_height="wrap_content"/> <Button android:id="@+id/speak"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="Speak"/>

  其中文本框中是输入要发音朗读的文字内容。界面如下图:


步骤三 编写监听事件

  接下来,我们为按钮添加事件处理,首先要获得用户输入的文字,代码如下:

import android.view.View.OnClickListener; import android.widget.Button; import android.view.View;import android.widget.EditText;  public class SpeakingAndroid extends Activity implements OnClickListener{       //create the Activity    public void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);        setContentView(R.layout.main);                      Button speakButton = (Button)findViewById(R.id.speak);            //监听button事件            speakButton.setOnClickListener(this);      }//onClick事件的响应代码      public void onClick(View v) {            //获得用户输入的文字            EditText enteredText = (EditText)findViewById(R.id.enter);            String words = enteredText.getText().toString();           //调用语音引擎的方法            speakWords(words);    }}

步骤四 编写相关的语音方法

  首先,要导入相关的语音引擎包,代码如下:

  import android.speech.tts.TextToSpeech;

  import android.speech.tts.TextToSpeech.OnInitListener;

  接下来,为了能系统先对运行语音引擎的准备工作进行检查,因此先要对其运行前的数据进行就绪检查,所以首先声明一个成员变量,如下:

  private int MY_DATA_CHECK_CODE = 0;

  并且在oncreate方法中,编写如下代码:

  Intent checkTTSIntent = new Intent();

  checkTTSIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);

  startActivityForResult(checkTTSIntent, MY_DATA_CHECK_CODE);

  以上代码的目的为,创建一个Intent,去检查TTS所需要的数据是否准备好,如果准备好的话,则调用onActivityResult方法,这个方法在下文中会提到。

  步骤五 创建TTS的实例

  在onActivityResult方法中,可以开始创建其TTS语音引擎的实例,代码如下:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {     if (requestCode == MY_DATA_CHECK_CODE) {         if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {             myTTS = new TextToSpeech(this, this);         }         else {             Intent installTTSIntent = new Intent();             installTTSIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);             startActivity(installTTSIntent);         }         } }

  当TTS的数据就绪数据检查完毕后,将调用这个方法,其中resultCode为TTS验证是否通过的标记,如果通过验证的话,则通过myTTS = new TextToSpeech(this, this);

  创建一个语音TTS实例。如果没能通过TTS准备就绪的安装测试,则新声明一个Intent,将用户引导到这个安装TTS引擎的界面中去。

步骤六 初始化引擎的数据

  由于在本程序中实现了OnInitListener接口,因此可以在oninit方法中,对语音引擎进行初始化设置,比如设置语言等,首先应该导入相关的类库,如下:

  import java.util.Locale;

  在oninit方法中写入如下代码:

public void onInit(int initStatus) {     if (initStatus == TextToSpeech.SUCCESS) {         myTTS.setLanguage(Locale.US); } else if (initStatus == TextToSpeech.ERROR) {            Toast.makeText(this, "Sorry! Text To Speech failed...", Toast.LENGTH_LONG).show();        }}

  这里判断如果TTS已经就绪成功,则调用setLanguage方法设置为使用对应的语言(这

  里是英文),如果判断TTS不能准备就绪,则调用Toast的显示方法告知用户。

 步骤七 让TTS说话

  在准备好以上步骤后,最后一步就是让TTS开口说话了,在speakWords方法中,写入如下代码即可

  private void speakWords(String speech) {

  myTTS.speak(speech, TextToSpeech.QUEUE_FLUSH, null);

  }

  其中的speak方法中有很多参数可以选用,具体请参考Android文档,这里选用了

  参数TextToSpeech.QUEUE_FLUSH,如果想让TTS语音引擎连续不断地朗读,可以使用

  myTTS.speak(speech, TextToSpeech.QUEUE_ADD, null)的参数。如果要求应用不再进行朗读,则可以添加一句:

  myTTS.shutdown();

  但除非是明确用户不在需要应用进行朗读,否则如果要连续让系统朗读的话,则不应该添加这句代码。

  小结

  本文简单一步步地介绍了如何在Android SDK中使用语音引擎TTS,读者可以通过这个例子,创建更多丰富的语音应用。本文的代码在

  http://mobile.tutsplus.com/tutorials/android/android-sdk-using-the-text-to-speech-engine/可以下载。

原文链接:http://dev.yesky.com/147/30941647.shtml

更多相关文章

  1. Android(安卓)之 Window、WindowManager 与窗口管理
  2. Android(安卓)App 启动流程梳理(基于 Android(安卓)10)
  3. Android菜鸟的成长笔记(14)—— Android中的状态保存探究(上)
  4. Android(安卓)语音识别学习小记--暑期大学生博客分享大赛 - 2011
  5. Android从启动到程序运行发生的事情
  6. 在Android中监控来电和去电
  7. 说说android下TV版本UC浏览器模拟鼠标的实现
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android下按扭的使用方法
  2. Android获取statusBar和navigationBar高
  3. Android官方教程翻译(2)——运行第一个程序
  4. Android 关于显示键盘,布局错乱网上顶的问
  5. android登录简单窗口
  6. Android UISegmentedControl Fragment切
  7. Android 媒体:网络视频播放器的基本设计
  8. AsyncTask学习笔记
  9. android 如何获取当前运行的activity
  10. 【android】简单的根据url下载图片的一个