2013-07-12 4 views
0

Я пытаюсь закончить работу после ее окончания, но по какой-то причине я не могу понять, что он говорит мне, что setOnUtteranceCompleted не применим для текста в речь. Я новичок в программировании андроида поэтому, пожалуйста, будьте нежны :-)Android текст в речь setOnUtteranceCompleted не применимо

Вот код ...

public class SpeakActivity extends Activity implements OnUtteranceCompletedListener{ 

    Random randnum = new Random(); 
    TextToSpeech tts = null; 
    private boolean ttsIsInit = false; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_speak); 
     // Show the Up button in the action bar. 
     setupActionBar(); 
     startTextToSpeech(); 
    } 

    void startTextToSpeech(){ 
     final int randint = randnum.nextInt(4); 
     final String text = ((GlobVars) this.getApplication()).getResponse(randint); 
     tts = new TextToSpeech(this, new OnInitListener() { 
      public void onInit(int status) { 
       tts.setOnUtteranceCompletedListener(this); 
       if (status == TextToSpeech.SUCCESS) { 
        ttsIsInit = true; 
        if (tts.isLanguageAvailable(Locale.ENGLISH) >= 0){ 
         tts.setLanguage(Locale.ENGLISH); 
        } 
        tts.setPitch(0.5f); 
        tts.setSpeechRate(0.5f); 
        if (tts != null && ttsIsInit) { 
         Log.d("got ere", "spoken"); 
         tts.speak(text, TextToSpeech.QUEUE_ADD, null); 
        } 
       } 
      } 
     }); 
    } 


    // shut down tts to free the TTS resources 
    @Override 
    public void onDestroy() { 
     if (tts != null) { 
     tts.stop(); 
     tts.shutdown(); 
    } 
    super.onDestroy(); 
} 


    @Override 
    public void onUtteranceCompleted(String arg0) { 
     ((GlobVars) this.getApplication()).setListen(true); 
     this.finish(); 

    } 


} 

ответ

0

Я ВЗ уверен, но в соответствии с Документами о setOnUtteranceCompletedListener(), возможно, придется использовать TextToSpeech.OnUtteranceCompletedListener listener в качестве Аргумент. Я думаю, что способ использования функции такой, как показано ниже. Обратите внимание, что используйте метод runOnUIThread, если вы хотите внести какие-либо изменения в пользовательский интерфейс при вызове функции onUtteranceCompleted.

TextToSpeech tts= new TextToSpeech(context, new OnInitListener() { 
    @Override 
    public void onInit(int status) { 
     tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() { 
      @Override 
      public void onUtteranceCompleted(String utteranceId) { 
       //Do things here 
      } 
     }); 
    } 
}); 

0 Оценка: onUtteranceCompleted does not get called? вопрос.

Надеюсь, это поможет.

Смежные вопросы