adroid TTS编程(文字转语音)
功能就是让手机读出来你写的字。TTS就是Text To Speech废话不说,直接上代码:
/*
* 这个程序是将文字转换成语音
* 作者:追梦
* 时间:2014年6月6日
* 邮箱:pjkui@qq.com
* */
package com.example.tts;
import java.util.Locale;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.Engine;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity implements OnInitListener{
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
//super.onActivityResult(requestCode, resultCode, data);
if(requestCode==REQ_TTS_STATUS_CHECK)
{
switch(resultCode)
{
case TextToSpeech.Engine.CHECK_VOICE_DATA_PASS:
mTts=new TextToSpeech(this,this);
Log.v(TAG,"TTS is Installed!");
break;
case TextToSpeech.Engine.CHECK_VOICE_DATA_BAD_DATA:
break;
case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_DATA:
break;
case TextToSpeech.Engine.CHECK_VOICE_DATA_MISSING_VOLUME:
//缺少需要语言的发音数据
Log.v(TAG,"Need language stuff:"+resultCode);
Intent dataIntent = new Intent();
dataIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivity(dataIntent);
break;
case TextToSpeech.Engine.CHECK_VOICE_DATA_FAIL:
//检查失败
break;
default :
Log.v(TAG, "Got a failure");
break;
}
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mTts.shutdown();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if(mTts!=null)
{
mTts.stop();
}
}
private EditText inputText=null;
private Button speakBtn=null;
private static final int REQ_TTS_STATUS_CHECK=0;
private static final String TAG="TTS Demo";
private TextToSpeech mTts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//检测TTS数据是否已经安装且可以使用
Intent checkIntent= new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent,REQ_TTS_STATUS_CHECK);
inputText=(EditText) findViewById(R.id.inputText);
speakBtn=(Button) findViewById(R.id.SpeakBtn);
inputText.setText("This a example of speech synthesis");
speakBtn.setOnClickListener(new OnClickListener(){
public void onClick(View v)
{
mTts.speak(inputText.getText().toString(), TextToSpeech.QUEUE_ADD, null);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
if(status==TextToSpeech.SUCCESS)
{
int result=mTts.setLanguage(Locale.US);
if(result==TextToSpeech.LANG_MISSING_DATA||result==TextToSpeech.LANG_NOT_SUPPORTED)//判断语言是否可用
{//如果不支持
Log.v(TAG,"语言不可用");
speakBtn.setEnabled(false);
}
else
{
mTts.speak("this is an example of speech example", TextToSpeech.QUEUE_ADD, null);
speakBtn.setEnabled(true);
}
}
}//end of oninit()
}