2012-06-06 15 views

Respuesta

1

Este funcionario Android Blog Post te ofrece la mejor práctica para detectar si el motor TTS está instalado y listo para su uso, así como otras prácticas de TTS.

1

Para guardar los clics:

Lanzamiento esto para comprobar si se ha instalado TTS o no:

Intent checkIntent = new Intent(); 
checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); 

y luego dan lugar a esto:

private TextToSpeech mTts; 
protected void onActivityResult(
    int requestCode, int resultCode, Intent data) { 
if (requestCode == MY_DATA_CHECK_CODE) { 
    if (resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS) { 
     // success, create the TTS instance 
     mTts = new TextToSpeech(this, this); 
    } else { 
     // missing data, install it 
     Intent installIntent = new Intent(); 
     installIntent.setAction(
      TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
     startActivity(installIntent); 
    } 
} 
} 
+0

pero cómo este código me ayuda a saber si un lenguaje en particular es compatible con el motor TTS o no y 2do: cómo configurar el motor predeterminado a otro motor TTS? – piks

11

se puede comprobar por primero enviando un intento para el resultado

Intent intent = new Intent(); 
intent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); 
startActivityForResult(intent, 0); 

A continuación, se puede comprobar que si se ha instalado el motor TTS o no en el método onActivityResult:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
if(requestCode == 0){ 
    if(resultCode == TextToSpeech.Engine.CHECK_VOICE_DATA_PASS){ 
    Toast.makeText(getApplicationContext(),"Already Installed", Toast.LENGTH_LONG).show(); 
} else { 
    Intent installIntent = new Intent(); 
    installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); 
    startActivity(installIntent); 
    Toast.makeText(getApplicationContext(),"Installed Now", Toast.LENGTH_LONG).show(); 
} 

esperar que funcione :)

+0

pero cómo este código me ayuda a saber si un lenguaje en particular es compatible con el motor TTS o no y segundo: cómo configurar el motor predeterminado a otro motor TTS? – piks

+0

Respuesta 1: Hay una función llamada isLanguageAvailable (Locale.FRANCE); Respuesta 2da: ¡No entendí tu pregunta! @piks –

+0

La segunda pregunta es: supongamos que el dispositivo tiene más de un motor TTS instalado y un motor configurado como predeterminado (generalmente PICO) pero el TTS predeterminado no admite todos los idiomas, por ejemplo, portugués, en este escenario Mi aplicación debería verificar primero si el motor predeterminado actualmente configurado admite portugués o no, de lo contrario, establecerá otro TTS instalado y verificará lo mismo ... ¿cómo lograrlo programáticamente? – piks

1

Esto le da la lista de los motores TTS instalado en tu Android .

tts = new TextToSpeech(this, this); 
for (TextToSpeech.EngineInfo engines : tts.getEngines()) { 
Log.d("Engine Info " , engines.toString()); 
} 
Cuestiones relacionadas