android语音播报
其他
2018-08-31 14:21:23
阅读次数: 0
- 前阵子在写android语音播报对接的科大讯飞的sdk说实话科大讯飞的语音这块着实厉害,但无奈是要钱滴。所以自己用个体验版玩玩还成。
- 然后另辟蹊径,然后用android自带的TextToSpeech写了一个支持中文哟。
- 贴代码,简单的小dome
- 首先在xml文件里写一个EditText和Button
- 大概就是这样。
- 然后就是后台实现了
public
class
MainActivity
extends
Activity
implements
TextToSpeech.OnInitListener {
private
TextToSpeech tts;
private
Button btnSpeak;
private
EditText txtText;
-
@Override
public
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.main);
- //实例化TextToSpeech
tts =
new
TextToSpeech(
this
,
this
);
-
btnSpeak = (Button) findViewById(R.id.btnSpeak);
-
txtText = (EditText) findViewById(R.id.txtText);
-
btnSpeak.setOnClickListener(
new
View.OnClickListener() {
-
@Override
public
void
onClick(View arg0) {
speakOut();
}
-
});
}
-
@Override
public
void
onDestroy() {
if
(tts !=
null
) {
tts.stop();
tts.shutdown();
}
super
.onDestroy();
}
-
@Override
public
void
onInit(
int
status) {
-
if
(status == TextToSpeech.SUCCESS) {
- //这个是重点这里现在可以设置中文了
int
result = tts.setLanguage(Locale.CHINA);
-
if
(result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e(
"TTS"
,
"This Language is not supported"
);
}
else
{
btnSpeak.setEnabled(
true
);
speakOut();
}
-
}
else
{
Log.e(
"TTS"
,
"Initilization Failed!"
);
}
-
}
- //播报语音
private
void
speakOut() {
-
String text = txtText.getText().toString();
-
tts.speak(text, TextToSpeech.QUEUE_FLUSH,
null
);
}
- }
- 注:不同的手机tts会有所不同
转载自blog.csdn.net/jia_you1/article/details/77461645