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.
- TextToSpeech.OnInitListener.onInit (int) que se llama continuamente
- TextToSpeech.setEngineByPackageName () no establece nada
- ¿Es Google TTS Engine en todos los teléfonos Android, y dónde puedo conseguirlo?
- Cómo encuestar los motores TTS disponibles para los idiomas disponibles sin instanciar cada uno y wating para init
- Usar texto a voz en una llamada de voz
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:
Así pues, tengo 3 preguntas / problemas:
- ¿Hay alguna manera de forzar programatically para utilizar Samsung TTS sin preguntar?
- 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).
- 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
esLANG_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):
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.
- Android TTS no habla gran cantidad de texto
- ¿Cómo instalar el motor TTS específico programáticamente en Android?
- TextToSpeech: función de palabra obsoleta en el nivel 21 de la API
- Android TextToSpeech: obtener la longitud de tiempo de audio
- Sistema lengua turca para el texto al discurso
- ¿Qué en TtsService podría explicar la falta de onUtteranceCompleted () para playEarcon ()?
- Android: escucha un comando de voz (todo el tiempo)
- Problema de STOP de texto a voz
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); }
- Custom ListView en Fragmento que no se adhiere al tema principal
- Texto con fuente personalizada y estilo en negrita