TextToSpeech.OnInitListener.onInit (int) que se llama continuamente

Estoy recibiendo informes de que, en algunos (no todos) HTC Desire HD (FRF91, 2.2) y HTC EVO 4G (PC36100 | 3.29.651.5, 2.2), el TextToSpeech.OnInitListener.onInit(int) se llama repetidamente 1500 veces en el espacio de unos segundos) en el mismo objeto. Este comportamiento no ocurre para ninguno de mis otros usuarios (o con otros usuarios de Desire HD) AFAICT.

El código es:

 TextToSpeech tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() { private int mCallCount = 0; // trying to investigate potential infinite loops @Override public void onInit(int status) { if ((mCallCount % 100) == 1) { // report this } mCallCount++; } }); 

Alguien alguna idea?

EDIT: También he intentado llamar al método shutdown() (la primera vez que se detectan múltiples llamadas de escuchas) pero esto no parece ayudar.

3 Solutions collect form web for “TextToSpeech.OnInitListener.onInit (int) que se llama continuamente”

Tal vez usted debe obtener alrededor de él con su propio método intermediario, por ejemplo:

 private long lastCall = 0; private long deepBreath = 5*1000; //5 seconds private boolean hasRested; TextToSpeech tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() { @Override public void onInit(int status) { long thisCall = Calendar.getInstance().getTimeInMillis(); intermediaryMethod(status, thisCall); } }); //new method public void intermediaryMethod(int status, long thisCall) { hasRested = (thisCall-lastCall)>=deepBreath; if (hasRested) { lastCall = thisCall; //do something about 'status' } } 

Esto puede o no puede ayudar, pero tuve un problema similar cuando llaman tts de un servicio, por suerte para mí era mejor hacer mi tts de una actividad que resolvió el problema.

Si lo hace, y es apropiado, asegúrese de que el manifiesto para la actividad tenga:

 android:finishOnTaskLaunch="true" 

Trate de crear el objeto de la Textospeech antes de crear, por ejemplo. Globalmente .try este código y comprobar es todavía llamar a muchas veces ????

 public class TtsActivity extends Activity implements OnInitListener { private int MY_DATA_CHECK_CODE = 0; private TextToSpeech tts; private EditText inputText; private Button speakButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); inputText = (EditText) findViewById(R.id.input_text); speakButton = (Button) findViewById(R.id.speak_button); speakButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String text = inputText.getText().toString(); if (text!=null && text.length()>0) { Toast.makeText(TtsActivity.this, "Saying: " + text, Toast.LENGTH_LONG).show(); tts.speak(text, TextToSpeech.QUEUE_ADD, null); } } }); Intent checkIntent = new Intent(); checkIntent.setAction(TextToSpeech.Engine.ACTION_CHECK_TTS_DATA); startActivityForResult(checkIntent, MY_DATA_CHECK_CODE); } 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 tts = new TextToSpeech(this, this); } else { // missing data, install it Intent installIntent = new Intent(); installIntent.setAction(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA); startActivity(installIntent); } } } @Override public void onInit(int status) { if (status == TextToSpeech.SUCCESS) { Toast.makeText(TtsActivity.this, "Text-To-Speech engine is initialized", Toast.LENGTH_LONG).show(); } else if (status == TextToSpeech.ERROR) { Toast.makeText(TtsActivity.this, "Error occurred while initializing Text-To-Speech engine", Toast.LENGTH_LONG).show(); } } } 
  • ¿Cómo puedo guardar el archivo Text to Speech como formato .wav / .mp3 en Almacenamiento externo
  • Android TTS (texto a voz) no pronuncia letra única correctamente
  • ¿Qué en TtsService podría explicar la falta de onUtteranceCompleted () para playEarcon ()?
  • ¿Cómo saber cuándo se termina el TTS?
  • ¿Cómo comprobar si TtsService (o un servicio de Android) está detenido?
  • SpeechToText y ejecutando la intención ACTION_CHECK_TTS_DATA
  • Android: escucha un comando de voz (todo el tiempo)
  • TTS-UtteranceProgressListener no se llama
  • La salida TTS siempre va a A2DP
  • Problemas con TTS en el Samsung Galaxy S3
  • Ejecución de TTS Android en un servicio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.