第1页创建Android工程

  现在,随着移动应用的日益普及,移动语音应用越来越受到用户的重视和喜爱,本文将指导用户如何在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;

  publicclass SpeakingAndroid extends Activity implements OnClickListener

  {

  //create the Activity

  publicvoid onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  Button speakButton =(Button)findViewById(R.id.speak);

  //监听button事件

  speakButton.setOnClickListener(this);

  }//onClick事件的响应代码

  publicvoid onClick(View v) {

  //获得用户输入的文字

  EditText enteredText =(EditText)findViewById(R.id.enter);

  Stringwords =enteredText.getText().toString();

  //调用语音引擎的方法

  speakWords(words);

  }

  }

  第2页编写相关的语音方法

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

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

  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(intrequestCode, intresultCode, Intent data) {

  if(requestCode ==MY_DATA_CHECK_CODE) {

  if(resultCode ==TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {

  myTTS =newTextToSpeech(this, this);

  }

  else{

  Intent installTTSIntent =newIntent();

  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方法中写入如下代码:

  publicvoid onInit(intinitStatus) {

  if(initStatus ==TextToSpeech.SUCCESS) {

  myTTS.setLanguage(Locale.US);

  } elseif(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/可以下载。(本文来源:天极网 )

更多相关文章

  1. Android仿淘宝首页UI(附代源代码及示例图片)
  2. Android中使用语音引擎入门七步曲
  3. 【移动开发】Android中图片过大造成内存溢出,OOM(OutOfMemory)异常
  4. 狂刷Android范例之4:用代码安装卸载app
  5. Android(安卓)超简单的录制屏幕视频及生成GIF文件的方法
  6. 最全Android学习路线总结,绝对干货
  7. Android中可以做的两件坏事---破解锁屏密码和获取Wifi密码
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android之关于Intent的Flag属性的讲解
  2. How to fix the Android(安卓)AVD no tar
  3. OnclickListener与View.OnclickListener
  4. Android(安卓)studio3.1.2 坑——3rd-par
  5. Android(安卓)Event.getX 与getRawX的区
  6. Android调用系统播放器
  7. 在服务器上使用grandle打包android源码
  8. android 密码加密
  9. android 模拟器中找不到程序
  10. Android中Parcelable和Serializable接口