本文主要介绍了TextToSpeech在Android中的使用。通过初始化语音,这是一个异步操作。初始化完成后,调用oninitListener。让我们看看边肖的具体示例代码。
前言
一年前和朋友一起买了至少一个英文APP,模仿一个APP实现单词的功能。一开始用的是TextToSpeech,后来觉得声音不够好,就用了第三方。
APP初稿如图:
实现
1.初始化语音。这是一个异步操作。初始化后调用oninitListener(第二个参数)。
TextToSpeech mTts=new TextToSpeech(this,this);
2.实现TextToSpeech。OnInitListener
注意:语言可能不可用。
//实现TextToSpeech。OnInitListener .
公共void onInit(int状态){
if (status==TextToSpeech。成功){
//将首选语言设置为中文。请注意,该语言可能不可用,并且结果会表明这一点
int result=mTts.setLanguage(区域设置。中国);
if (result==TextToSpeech。LANG_MISSING_DATA ||
result==TextToSpeech。LANG_NOT_SUPPORTED) {
//缺少语言数据或不支持该语言。
Log.e(标签,'缺少语言数据或不支持该语言');
}否则{
//检查文档中其他可能的结果代码。
//例如,语言可能适用于区域设置,但不适用于指定的国家和变体。
//TTS引擎已成功初始化。
//允许用户按下按钮,使应用程序再次发声。
magainbutton . set enabled(true);
}
}否则{
//初始化失败
Log.e(标签,'初始化失败');
}
}
3.写一个阅读方法,需要的时候会触发(比如点击事件)
TextToSpeech的speak方法有两个重载。
朗读方法
speak(CharSequence text,int queueMode,Bundle params,String uttance id);
第二个参数queueMode用于指定发音队列模式,有两种模式可供选择。
TextToSpeech。QUEUE_FLUSH:在这种模式下,当有新任务时,当前的语音任务会被清除,执行新的语音任务。
(2)TextToSpeech。QUEUE_ADD:在这种模式下,新的语音任务会放在语音任务之后,新的语音任务要等到前一个语音任务完成后才会执行。
将语音录制为音频文件。
synthesizeToFile(CharSequence文本,Bundle参数,File文件,字符串uttanceid);
private void sayHello() {
String hello=' Hellow
//TextToSpeech的speak方法有两个重载。
//大声朗读的方法。
//speak(CharSequence text,int queueMode,Bundle params,String uttance id);
//将语音录制为音频文件
//synthesizeToFile(char sequence text,Bundle params,File file,String ut anceid);
//第二个参数queueMode用于指定发音队列模式,选择两种模式。
//(1)TextToSpeech。QUEUE_FLUSH:在这种模式下,当有新任务时,当前的语音任务会被清除,执行新的语音任务。
//(2)TextToSpeech。QUEUE_ADD:在这种模式下,新的语音任务会放在语音任务之后,
//等到上一个语音任务完成后,再执行新的语音任务。
mTts.speak(你好,
TextToSpeech。队列刷新,
null);
}
4.请记住在其生命周期中结束活动。
@覆盖
public void onDestroy() {
//结束生命周期
如果(MTT!=null) {
mtts . stop();
mtts . shut down();
}
super . on destroy();
}
源码
SpeechActivity.java
公共类SpeechActivity扩展Activity实现TextToSpeech。OnInitListener {
private static final String TAG=' speech demo ';
私有TextToSpeech mTts
私人纽扣mButton
@覆盖
public void on create(Bundle saved instancestate){
super . oncreate(savedInstanceState);
setContentView(r . layout . text _ to _ speech);
//初始化语音。这是一个异步操作。初始化后调用oninitListener(第二个参数)。
mTts=new TextToSpeech(this,this);
mButton=(Button)findViewById(r . id . again _ Button);
//触发器
mButton.setOnClickListener(新视图。OnClickListener() {
公共void onClick(视图v) {
say hello();
}
});
}
@覆盖
public void onDestroy() {
//结束生命周期
如果(MTT!=null) {
mtts . stop();
mtts . shut down();
}
super . on destroy();
}
//实现TextToSpeech.OnInitListener。
公共void onInit(int状态){
if (status==TextToSpeech。成功){
//将首选语言设置为中文。请注意,该语言可能不可用,并且结果会表明这一点
int result=mTts.setLanguage(区域设置。中国);
if (result==TextToSpeech。LANG_MISSING_DATA ||
result==TextToSpeech。LANG_NOT_SUPPORTED) {
//缺少语言数据或不支持该语言。
Log.e(标签,'缺少语言数据或不支持该语言');
}否则{
//检查文档中其他可能的结果代码。
//例如,语言可能适用于区域设置,但不适用于指定的国家和变体。
//TTS引擎已成功初始化。
//允许用户按下按钮,使应用程序再次发声。
magainbutton . set enabled(true);
}
}否则{
//初始化失败
Log.e(标签,'初始化失败');
}
}
private void sayHello() {
hello=‘上当你不吃鱼’;
//TextToSpeech的speak方法有两个重载。
//大声朗读的方法。
//speak(CharSequence text,int queueMode,Bundle params,String uttance id);
//将语音录制为音频文件
//synthesizeToFile(char sequence text,Bundle params,File file,String ut anceid);
//第二个参数queueMode用于指定发音队列模式,选择两种模式。
//(1)TextToSpeech。QUEUE_FLUSH:在这种模式下,当有新任务时,当前的语音任务会被清除,执行新的语音任务。
//(2)TextToSpeech。QUEUE_ADD:在这种模式下,新的语音任务会放在语音任务之后,
//等到上一个语音任务完成后,再执行新的语音任务。
mTts.speak(你好,
TextToSpeech。队列刷新,
null);
}
}
text_to_speech.xml
linear layout xmlns:Android=' http://schemas . Android . com/apk/RES/Android '
安卓:方向='垂直'
Android:layout _ width=' match _ parent '
Android:layout _ height=' match _ parent '
button Android:id=' @ id/again _ button '
Android:layout _ width=' wrap _ content '
Android:layout _ height=' wrap _ content '
android:enabled='false' /
/线性布局
这篇关于Android中TextToSpeech使用的文章就到这里了。有关adroid TextToSpeech使用的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。