Tôi đang cố gắng sử dụng API TTS của Android để đọc "lời nói" của tôi và sau đó gọi trình nghe onUtteranceCompleted() không thành công. Tôi đã đăng ký đối tượng TTS của tôi và nó trả về THÀNH CÔNG, vì vậy tôi không thể tìm ra cuộc sống của tôi tại sao cuộc gọi lại của tôi không được gọi.Android TTS onUtteranceMọi lại gọi lại không được gọi là
Tôi đã thử tìm kiếm trợ giúp, nhưng có vẻ như những người khác cũng gặp khó khăn với điều này. Tôi thiếu một cái gì đó đơn giản?
Cảm ơn bạn đã trợ giúp bạn có thể cung cấp.
package com.test.mytts;
import java.util.HashMap;
import android.app.Activity;
import android.media.AudioManager;
import android.os.Bundle;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
import android.widget.TextView;
import android.widget.Toast;
public class MyTTS extends Activity implements OnInitListener, OnUtteranceCompletedListener
{
TextView tv;
private TextToSpeech _tts;
@Override
public void onCreate(Bundle savedInstanceState)
{
tv = new TextView(this);
tv.setText("MyTTS: ");
super.onCreate(savedInstanceState);
setContentView(tv);
_tts = new TextToSpeech(this, this);
}
@Override
public void onInit(int status)
{
HashMap<String, String> myHashAlarm = new HashMap<String, String>();
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_STREAM, String.valueOf(AudioManager.STREAM_NOTIFICATION));
myHashAlarm.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "test");
if (status == TextToSpeech.SUCCESS)
{
Toast.makeText(this, "Trying to speak...", Toast.LENGTH_SHORT).show();
int result = _tts.setOnUtteranceCompletedListener(this);
tv.append(String.valueOf(result));
_tts.setSpeechRate((float) .5);
_tts.speak("Testing one, two, three", TextToSpeech.QUEUE_ADD, myHashAlarm);
}
else
Toast.makeText(this, "Failed to initialize TTS.", Toast.LENGTH_SHORT).show();
}
@Override
public void onUtteranceCompleted(String utteranceId)
{
Toast.makeText(this, "onUtteranceCompleted", Toast.LENGTH_SHORT).show();
}
@Override
public void onDestroy()
{
super.onDestroy();
_tts.shutdown();
}
}
Tôi không thấy bất cứ điều gì sai trái với những gì bạn có, nhưng bạn có lẽ tốt hơn bằng cách sử dụng báo cáo đăng nhập hơn so với bánh mì nướng để theo dõi những gì đang xảy ra. Sau đó, bạn có thể xem lại thứ tự trong logcat. –
Tôi nghĩ rằng đây sẽ giúp bạn: [http://stackoverflow.com/questions/4658376/how-to-know-when-tts-is-finished][1] [1]: http: //stackoverflow.com/questions/4658376/how-to-know-when-tts-is-finished – uriellabs