an0*_*00b 5 android text-to-speech
在通过这个答案设法使TextToSpeech.setEngineByPackageName()工作之后,我现在遇到了"相反"的问题:
tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra");始终返回TextToSpeech.SUCCESS,即使该设备中根本没有安装该软件包.
由于设备上没有该软件包,TTS会继续使用Android的默认设置pico,这是预期的,但我不明白为什么要setEngineByPackageName()返回SUCCESS.
怎么会这样?
为了所有人的利益,我在另一个(但相关)问题上发布了@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;
}
}
Run Code Online (Sandbox Code Playgroud)
可以在以下位置查看如何完成此操作的一个很好的示例:
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |