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 "
/>

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

Android中使用语音引擎入门

  步骤三 编写监听事件

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

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/可以下载。










本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/736039,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
XML 数据库 Android开发
探索Android开发:从入门到精通的旅程
在这篇文章中,我们将一起踏上一段激动人心的旅程,通过深入浅出的方式,解锁Android开发的秘密。无论你是编程新手还是有经验的开发者,本文都将为你提供宝贵的知识和技能,帮助你构建出色的Android应用。我们将从基础概念开始,逐步深入到高级技巧和最佳实践,最终实现从初学者到专家的转变。让我们开始吧!
49 3
|
2月前
|
Android开发
布谷语音软件开发:android端语音软件搭建开发教程
语音软件搭建android端语音软件开发教程!
|
3月前
|
存储 前端开发 测试技术
Android kotlin MVVM 架构简单示例入门
Android kotlin MVVM 架构简单示例入门
46 1
|
2月前
|
XML IDE Java
安卓应用开发入门:从零开始的旅程
【10月更文挑战第23天】本文将带领读者开启一段安卓应用开发的奇妙之旅。我们将从最基础的概念讲起,逐步深入到开发实践,最后通过一个简易的代码示例,展示如何将理论知识转化为实际的应用。无论你是编程新手,还是希望扩展技能的软件工程师,这篇文章都将为你提供有价值的指导和启发。
39 0
|
3月前
|
开发框架 移动开发 Android开发
安卓与iOS开发中的跨平台解决方案:Flutter入门
【9月更文挑战第30天】在移动应用开发的广阔舞台上,安卓和iOS两大操作系统各自占据半壁江山。开发者们常常面临着选择:是专注于单一平台深耕细作,还是寻找一种能够横跨两大系统的开发方案?Flutter,作为一种新兴的跨平台UI工具包,正以其现代、响应式的特点赢得开发者的青睐。本文将带你一探究竟,从Flutter的基础概念到实战应用,深入浅出地介绍这一技术的魅力所在。
100 7
|
4月前
|
Android开发 开发者
安卓开发中的自定义视图:从入门到精通
【9月更文挑战第19天】在安卓开发的广阔天地中,自定义视图是一块充满魔力的土地。它不仅仅是代码的堆砌,更是艺术与科技的完美结合。通过掌握自定义视图,开发者能够打破常规,创造出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战应用,一步步展示如何用代码绘出心中的蓝图。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创意和效率的大门。让我们一起探索自定义视图的秘密,将你的应用打造成一件艺术品吧!
72 10
|
3月前
|
Web App开发 编解码 视频直播
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
本文详细介绍了Android端直播技术的全貌,涵盖了从实时音视频采集、编码、传输到解码与播放的各个环节。文章还探讨了直播中音视频同步、编解码器选择、传输协议以及直播延迟优化等关键问题。希望本文能为你提供有关Andriod端直播技术的深入理解和实践指导。
60 0
|
4月前
|
IDE Java 程序员
安卓应用开发入门:打造你的第一个“Hello World”
【9月更文挑战第11天】在编程的世界里,每一个初学者的旅程都从一个简单的“Hello World”开始。本文将带领安卓开发的新手们,通过简单直观的方式,一步步构建出自己的第一个安卓应用。我们将探索安卓工作室(Android Studio)的安装、项目的创建,以及如何运行和调试你的应用。无论你是编程新手还是想扩展技能的老手,这篇文章都将为你打开一扇通往安卓世界的大门。
198 7
|
4月前
|
IDE Java API
安卓应用开发入门:打造你的第一个"Hello World"
【9月更文挑战第11天】在探索安卓开发的海洋中,每个开发者的航行都从简单的"Hello World"开始。本文将作为你的航标,引导你驶向安卓应用开发的精彩世界。我们将一起启航,通过浅显易懂的语言和步骤,学习如何构建并运行你的第一个安卓应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将为你提供所需的知识和信心。准备好了吗?让我们揭开安卓开发的神秘面纱,一起创造些令人兴奋的东西吧!
|
5月前
|
运维 Cloud Native Android开发
云原生之旅:容器化与微服务架构的融合之道安卓应用开发入门指南
本文将深入探讨云原生技术的核心要素——容器化和微服务架构,并揭示它们如何共同推动现代软件的开发与部署。通过实际案例分析,我们将看到这两种技术如何相辅相成,助力企业实现敏捷、可扩展的IT基础设施。文章旨在为读者提供一条清晰的道路,指引如何在云原生时代利用这些技术构建和优化应用。 本文将引导初学者了解安卓应用开发的基本概念和步骤,从安装开发环境到编写一个简单的“Hello World”程序。通过循序渐进的讲解,让读者快速掌握安卓开发的核心技能,为进一步深入学习打下坚实基础。
56 1