android – TextToSpeech.setEngineByPackageName()即使在包不可用时也会返回成功

前端之家收集整理的这篇文章主要介绍了android – TextToSpeech.setEngineByPackageName()即使在包不可用时也会返回成功前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在设法使TextToSpeech.setEngineByPackageName()工作得益于this answer之后,我现在遇到了“相反”的问题:

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;
  }
}

如何做到这一点的一个很好的例子可以在以下方面看到:

http://code.google.com/p/wwwjdic/source/browse/branches/2.0/wwwjdic/src/org/nick/wwwjdic/TtsManager.java

猜你在找的Android相关文章