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

  • TextToSpeech, playEarcon y archivos .wav
  • Hablar con TTS como Hindi
  • ¿Cómo puedo controlar cómo Android TTS reproduce audio?
  • ¿Qué en TtsService podría explicar la falta de onUtteranceCompleted () para playEarcon ()?
  • TTS-UtteranceProgressListener no se llama
  • ¿Cómo instalar el motor TTS específico programáticamente en Android?
  • Usar texto a voz en una llamada de voz
  • Android llamada TTS en BroadcastReceiver
  • Sistema lengua turca para el texto al discurso
  • ¿Por qué no se llama a UtteranceProgress Listener a Text to Speach?
  • ¿Cómo agregar voces nuevas a Android Pico TTS?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.