感谢this answer设法使TextToSpeech.setEngineByPackageName()工作后,我现在遇到了“相反”的问题:
tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");
始终返回 TextToSpeech.SUCCESS ,即使设备中未安装该软件包也是如此。
由于设备上没有该软件包,TTS会继续使用Android的默认pico
,这是预期的,但我不明白为什么setEngineByPackageName()
会返回SUCCESS。
怎么会这样?
答案 0 :(得分:4)
为了所有人的利益,我发布了@Nikolay Elenkov就不同(但相关)的问题提供的答案:
当包不存在时调用setEngineByPackageName()不是一个好主意。相反,检查它是否已安装,如果未安装则不要尝试使用:
boolean isPackageInstalled(String packageName) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo pi = pm.getPackageInfo(packageName, 0);
return pi != null;
} catch (NameNotFoundException e) {
return false;
}
}
如何做到这一点的一个很好的例子可以在以下网址看到: