from: http://blog.youkuaiyun.com/ichliebephone/article/details/5802044

Java文件的编写:

要使用TTS得实现OnInitListener接口

 

[java]  view plain copy
  1. public class AndroidTTSDemoFirst extends Activity implements OnInitListener {  
  2.     /** Called when the activity is first created. */  
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.     }  
  8.   //实现TTS初始化接口  
  9.     @Override  
  10.     public void onInit(int status) {  
  11.         // TODO Auto-generated method stub  
  12.           
  13.     }  
  14. }  

 

接着定义好下面要用到的几个变量:

 

[java]  view plain copy
  1. private EditText inputText = null;  
  2. private Button speakBtn = null;  
  3.    private static final int REQ_TTS_STATUS_CHECK = 0;  
  4.    private static final String TAG = "TTS Demo";  
  5. private TextToSpeech mTts;  

 

虽然安装Android1.6版本及之后的Android机器都默认安装了TTS引擎,但某些设备可能会因为存储容量的限制而缺少安装和语言对应的资源文件,因此在使用TTS前,得先要检查是否安装了TTS语言数据,在onCreate函数中添加以下内容:

 

[java]  view plain copy
  1. //检查TTS数据是否已经安装并且可用  
  2.   Intent checkIntent = new Intent();  
  3.   checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);  
  4.   startActivityForResult(checkIntent, REQ_TTS_STATUS_CHECK);  

 

这里启动一个新的Intent去检查TTS数据是否已经安装,我们根据其返回的结果进行处理,如下所示:

 

[java]  view plain copy
  1. protected  void onActivityResult(int requestCode, int resultCode, Intent data) {  
  2.         if(requestCode == REQ_TTS_STATUS_CHECK)  
  3.         {  
  4.             switch (resultCode) {  
  5.             case TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:  
  6.                 //这个返回结果表明TTS Engine可以用  
  7.             {  
  8.                 mTts = new TextToSpeech(thisthis);  
  9.                 Log.v(TAG, "TTS Engine is installed!");  
  10.                   
  11.             }  
  12.                   
  13.                 break;  
  14.             case TextToSpeech.Engine.CHECK_VOICE_DATA_BAD_DATA:  
  15.                 //需要的语音数据已损坏  
  16.             case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA:  
  17.                 //缺少需要语言的语音数据  
  18.             case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_VOLUME:  
  19.                 //缺少需要语言的发音数据  
  20.             {  
  21.                 //这三种情况都表明数据有错,重新下载安装需要的数据  
  22.                 Log.v(TAG, "Need language stuff:"+resultCode);  
  23.                 Intent dataIntent = new Intent();  
  24.                 dataIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);  
  25.                 startActivity(dataIntent);  
  26.                   
  27.             }  
  28.                 break;  
  29.             case TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL:  
  30.                 //检查失败  
  31.             default:  
  32.                 Log.v(TAG, "Got a failure. TTS apparently not available");  
  33.                 break;  
  34.             }  
  35.         }  
  36.         else  
  37.         {  
  38.             //其他Intent返回的结果  
  39.         }  
  40.         }  

 

如果返回CHECK_VOICE_DATA_PASS表示检查成功,可以新建一个 TextToSpeech ,否则就去下载 TTS数据。