
在设法使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 – TextToSpeech.setEngineByPackageName()即使在包不可用时也会返回成功全部内容,希望文章能够帮你解决android – TextToSpeech.setEngineByPackageName()即使在包不可用时也会返回成功所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)