我想以编程方式了解如何获取设备的TTS引擎信息,例如是否安装了任何TTS引擎,如果已安装,那么每个TTS引擎支持的是什么和不同的语言? 我必须使用Android 2.1版(api level 7)来实现这一目标。
请帮我实现此功能。
此致
皮克斯
答案 0 :(得分:11)
您可以先发送结果意图进行检查
Intent intent = new Intent();
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(intent, 0);
然后你可以检查一下,如果你在onActivityResult方法中安装了TTS引擎:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == 0){
if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){
Toast.makeText(getApplicationContext(),"Already Installed", Toast.LENGTH_LONG).show();
} else {
Intent installIntent = new Intent();
installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
Toast.makeText(getApplicationContext(),"Installed Now", Toast.LENGTH_LONG).show();
}
希望它有效:)
答案 1 :(得分:3)
这将为您提供Android上安装的TTS引擎列表。
tts = new TextToSpeech(this, this);
for (TextToSpeech.EngineInfo engines : tts.getEngines()) {
Log.d("Engine Info " , engines.toString());
}
答案 2 :(得分:2)
保存点击次数:
启动它以检查是否安装了TTS:
Intent checkIntent = new Intent();
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA);
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE);
然后得到结果:
private TextToSpeech mTts;
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
if (requestCode == MY_DATA_CHECK_CODE) {
if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) {
// success, create the TTS instance
mTts = new TextToSpeech(this, this);
} else {
// missing data, install it
Intent installIntent = new Intent();
installIntent.setAction(
TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installIntent);
}
}
}
答案 3 :(得分:1)
这位官方Android Blog Post为您提供了检测TTS引擎是否已安装并可以使用的最佳实践,以及TTS上的其他实践。
答案 4 :(得分:0)
要检查已安装的 TTS 引擎,您需要先初始化 TTS 引擎。然后使用返回的 TTS 引擎对象调用函数 as unknown as Immutable<SuperState[Key]>
来了解是否有任何 TTS 引擎被初始化。
很酷,说得够多了,这是有效的代码:-
getEngines()