在设法使 TextToSpeech.setEngineByPackageName() 工作之后,感谢这个答案 https://stackoverflow.com/a/9476122/636571,我现在遇到“相反”的问题:
tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");
总是返回文字转语音.成功,即使设备中根本没有安装该软件包。
由于该包在设备上不可用,TTS 会继续使用 Android 的默认设置pico
,这是预期的,但我不明白为什么setEngineByPackageName()
返回成功。
怎么会这样?
为了大家的利益,我发布了提供的答案@尼古拉·埃连科夫 https://stackoverflow.com/a/9493035/636571关于一个不同的(但相关的)问题:
当包不存在时调用 setEngineByPackageName() 不是一个好主意。相反,检查它是否已安装并且如果未安装,请勿尝试使用它:
boolean isPackageInstalled(String packageName) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo(packageName, 0);
return pi != null;
} catch (NameNotFoundException e) {
return false;
}
}
可以在以下位置查看如何完成此操作的一个很好的示例:
http://code.google.com/p/wwwjdic/source/browse/branches/2.0/wwwjdic/src/org/nick/wwwjdic/TtsManager.java http://code.google.com/p/wwwjdic/source/browse/branches/2.0/wwwjdic/src/org/nick/wwwjdic/TtsManager.java
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)