2011-07-11 21 views
10

Mặc dù tôi đang thiết lập nó một cách chính xác:onUtteranceCompleted không được gọi?

HashMap<String, String> myHashRender = new HashMap<String, String>(); 
myHashRender.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "utid"); 
mTts.speak("Speak something", TextToSpeech.QUEUE_ADD, myHashRender); 

cũng

mTts.setOnUtteranceCompletedListener(this); 

trong sự thành công OnInit chức năng trở lại. Vẫn còn onUtteranceCompleted không được gọi. Mặc dù có câu hỏi trùng lặp, nhưng không có nơi tôi có thể tìm thấy câu trả lời.

Hoạt động của tôi cũng triển khai OnUtteranceCompletedListener.

Vui lòng trợ giúp.

+0

bạn có thể xác minh rằng bài phát biểu đã được tạo ra (bạn có thể nghe thấy nó)? – Ian

Trả lời

18

Gọi setOnUtteranceCompletedListener bên trong hàm onInit của đối tượng tts.

Nếu bạn muốn thực hiện bất kỳ thay đổi nào đối với giao diện người dùng trên cuộc gọi của hàm onUtteranceCompleted, hãy thêm mã bên trong phương thức runOnUIThread.

Và đừng nhớ để thêm giá trị param HashMap trong khi gọi nói) function (

Ví dụ:

TextToSpeech tts= new TextToSpeech(context, new OnInitListener() { 

@Override 
public void onInit(int status) { 

    mTts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() { 

     @Override 
     public void onUtteranceCompleted(String utteranceId) { 

      runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
       //UI changes 
       } 
      }); 
     } 
    }); 

} 
}); 


HashMap<String, String> params = new HashMap<String, String>(); 

params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"stringId"); 

tts.speak("Text to Speak",TextToSpeech.QUEUE_FLUSH, params); 
Các vấn đề liên quan