Problemas con TTS en el Samsung Galaxy S3

Estoy desarrollando una aplicación para Android que usa TTS. He creado una pantalla de bienvenida donde compruebo si el motor de TTS está instalado y, en caso de que no esté instalado, va a Google Play para descargarlo.

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); ... } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { ... if (requestCode == PersonalTextToSpeech.MY_DATA_CHECK_CODE) { if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { mTts = new TextToSpeech(context, this); } else { Intent installIntent = new Intent(); installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); context.startActivity(installIntent); } } } 

Estaba funcionando bien en los dispositivos Samsung con 2.2 y 2.3.x OS. Va a Google Play, si es necesario, pero ahora he intentado con un Samsung Galaxy S3 (con 4.1.1), que tiene 2 TTS instalado de forma predeterminada (Samsung y Google), así que tengo un diálogo pidiendo seleccionar uno.

Seleccione TTS

Si el usuario selecciona Samsung funciona perfectamente, pero si el usuario selecciona Google, va a Ajustes -> Idioma y entrada -> Salida de texto a voz -> Google Texto a voz del motor -> Configuración – -> Instalar datos de voz y obtengo esto: TTS Idiomas instalados

Así pues, tengo 3 preguntas / problemas:

  1. ¿Hay alguna manera de forzar programatically para utilizar Samsung TTS sin preguntar?
  2. Mi dispositivo es de España, pero si cambio el idioma al inglés, este no está disponible en mi lista de Google de los idiomas TTS, y no puedo encontrar una manera de añadirlo (ver captura de pantalla # 2).
  3. Si cambio el idioma al español, se supone que este idioma se instalará en mi dispositivo (ver captura de pantalla # 2), pero por alguna razón TTS resultCode es LANG_NOT_SUPPORTED (-2) .

De hecho, ahora mismo mientras escribo esto, acabo de encontrar algo raro.

Si selecciona Samsung TTS, funcionará ( resultCode = CHECK_VOICE_DATA_PASS (1) ), pero el "sonido de voz" cambiará dependiendo de cómo tenga su configuración (ver Captura de pantalla # 3): Configuración de TTS

Si elige Samsung, utilizará Samsung TTS o Google TTS según lo que haya seleccionado en: Configuración -> Idioma y entrada -> Salida de texto a voz.

Por lo tanto, incluso si selecciona Samsung TTS, podría utilizar Google TTS, pero si selecciona Google TTS directamente (ver Captura de pantalla # 1), fallará.

¿Puede alguien explicarme lo que estoy haciendo mal?

Gracias por tu ayuda.

I demasiado estancado en este problema y lo resolví simplemente reemplazando un código en mi onActivityResult. En lugar de revisar los datos de TTS, acabo de comprobar las voces disponibles.

  if (availableLanguages.isEmpty()) { // no language data available, prompt for install Intent installIntent = new Intent(); installIntent .setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(installIntent); } else { // some language data is available, create TTS instance myTTS = new TextToSpeech(this, this); } 
  • Ampliación del paquete de idiomas de texto a voz (TTS) de Android
  • Desarrollo de aplicaciones similares a "Google ahora" - ¿es posible utilizar el reconocimiento de voz sin entrada de teclado?
  • Android "speak fallado: no está vinculado al motor tts"
  • TTS: El éxito regresó de onInit () pero aún hay retraso para hablar primero
  • ¿Cómo puedo guardar el archivo Text to Speech como formato .wav / .mp3 en idioma árabe en External Storage?
  • ¿Cómo interpretar audiblemente la pronunciación IPA en Android?
  • UtteranceProgressListener no funciona para Android TTS
  • Referencia no resuelta en el anonimo oyente de Kotlin
  • Pausa en el TTS android
  • Android Texto a voz añadir texto de voz continuamente
  • ¿Por qué UtteranceProgressListener no es una interfaz?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.