TextToSpeech.setEngineByPackageName () devuelve el éxito incluso cuando el paquete no está disponible

Después de lograr que TextToSpeech.setEngineByPackageName () trabaje gracias a esta respuesta , ahora estoy teniendo el problema "opuesto":

tts.setEngineByPackageName("com.ivona.tts.voicebeta.eng.usa.kendra"); Siempre devuelve TextToSpeech.SUCCESS , incluso cuando ese paquete no está instalado en absoluto en el dispositivo.

Dado que el paquete no está disponible en el dispositivo, TTS procede a hablar con el pico predeterminado de Android, que se espera, pero no entiendo por qué setEngineByPackageName() devuelve SUCCESS.

¿Cómo podría ser esto?

Para el beneficio de todos, estoy publicando la respuesta proporcionada por @Nikolay Elenkov en una pregunta diferente (pero relacionada):

Llamar setEngineByPackageName () cuando el paquete no existe no es una buena idea. En su lugar, compruebe si está instalado y no intente utilizarlo si no está instalado :

 boolean isPackageInstalled(String packageName) { PackageManager pm = context.getPackageManager(); try { PackageInfo pi = pm.getPackageInfo(packageName, 0); return pi != null; } catch (NameNotFoundException e) { return false; } } 

Un buen ejemplo de cómo se hace esto se puede ver en:

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

  • ¿Por qué TextToSpeech.getLanguage () * a veces * devuelve null?
  • TextToSpeech setLanguage no funciona?
  • TextToSpeech: función de palabra obsoleta en el nivel 21 de la API
  • ¿Cómo puedo controlar cómo Android TTS reproduce audio?
  • Resalte la palabra actual que el motor TTS está hablando
  • Transmisión de notificaciones de texto a voz durante la conducción
  • ¿Cómo agregar voces nuevas a Android Pico TTS?
  • Android TTS no habla
  • Android: escucha un comando de voz (todo el tiempo)
  • Android: dos instancias de Text-to-Speech funcionan muy lentamente
  • No se puede detectar la finalización del androide TTS (devolución de llamada).
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.