前言
本篇文章主要讲解的有关Android开发中用的根据文字使用Speech进行语音播报,下面具体讲一下使用方法和注意事项。
下面主要讲解具体的使用方法
一、添加语音权限
1.在清单文件AndroidManifest.xml添加
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
二、主要方法
1.TextToSpeech的接口剖析
构造方法有三个:
TextToSpeech(Context context, OnInitListener listener)
TextToSpeech(Context context, OnInitListener listener, String engine)
TextToSpeech(Context context, OnInitListener listener, String engine,String packageName, boolean useFallback)
看代码我们用的是第三个
三、使用方法
1.主要使用步骤
1、新建一个类(内部类也是可以的),实现OnInitListener接口,重写onInit()方法,通常是判断TTS引擎初始化的状态:
private class TTSListener implements OnInitListener {
@Override
public void onInit(int status) {
// TODO Auto-generated method stub
if (status == TextToSpeech.SUCCESS) {
Log.i(TAG, "onInit: TTS引擎初始化成功");
}
else{
Log.i(TAG, "onInit: TTS引擎初始化失败");
}
}
}
2、获取TTS引擎
mSpeech = new TextToSpeech(MainActivity.this, new TTSListener());
3、在使用的时候,如果有需要可以调整TTS引擎参数,包括上面说的语速,语调,语言等等(当然,当前不支持中文,使用的话,先下载上面提到的服务或者应用并安装,然后在“设置”--》“语音与输入”--》“文本转语音输出”--》选择你安装中文TTS就可以了)
mSpeech.setLanguage(SharedData.languageList.get(choosedLanguage));
mSpeech.setSpeechRate(SharedData.voice_speed);
mSpeech.setPitch(SharedData.voice_pitch);
2.封装的工具类
public class SpeechUtils {
private Context context;
private static final String TAG = "SpeechUtils";
private static volatile SpeechUtils singleton;
private TextToSpeech textToSpeech; // TTS对象
public static SpeechUtils getInstance(Context context) {
if (singleton == null) {
synchronized (SpeechUtils.class) {
if (singleton == null) {
singleton = new SpeechUtils(context);
}
}
}
return singleton;//
}
public SpeechUtils(Context context) {
this.context = context;
speakText(null);
}
/**
* 关闭 语音合成
*/
public void shutdown() {
if (textToSpeech != null) {
textToSpeech.stop();
textToSpeech.shutdown();
textToSpeech = null;
}//
}
/**
* 第二个参数queueMode用于指定发音队列模式,两种模式选择
* (1)TextToSpeech.QUEUE_FLUSH:该模式下在有新任务时候会清除当前语音任务,执行新的语音任务
* (2)TextToSpeech.QUEUE_ADD:该模式下会把新的语音任务放到语音任务之后,
*
* @param text
*/
public void speakText(String text) {
if (textToSpeech == null) {
textToSpeech = new TextToSpeech(context, new TextToSpeech.OnInitListener() {
@Override
public void onInit(int i) {
if (i == TextToSpeech.SUCCESS) {
int result = textToSpeech.setLanguage(Locale.CHINA);
textToSpeech.setPitch(1.0f);// 设置音调,值越大声音越尖(女生),值越小则变成男声,1.0是常规
textToSpeech.setSpeechRate(1.0f);
}
}
});
}else {
if (!TextUtils.isEmpty(text)) {
textToSpeech.speak(text, TextToSpeech.QUEUE_ADD, null);
}
}
}
}
总结
以上就是今天要讲的内容,本文仅仅简单介绍了Android中的Speech的使用,而Android提供了大量能使我们快速便捷地处理的函数和方法。