当我创建一个活动时,我尝试使用texttospeech,但是只有当我触摸视图时,onTouch调用了它的talk,下面是代码:
@重载受保护的void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);setContentView(R.layout.activity_d);tts =新TextToSpeech(this,this);tts.setLanguage(Locale.US);tts.speak(" Check ",TextToSpeech.QUEUE_FLUSH,null);d= (LinearLayout) findViewById(R.id.d_layout);D.setOnTouchListener(新的View.OnTouchListener() {@覆盖公共布尔值onTouch(View,MotionEvent事件)){tts.speak(“检查检查”,TextToSpeech.QUEUE_FLUSH,null);返回false;}};}
只有当我触摸它的say check check,但当我开始活动时,它没有说check check,为什么和如何修复它?
发布于 2015-04-07 19:33:34
问题是在初始化speak()对象之前调用TextToSpeech。您需要侦听传递给TextToSpeech构造函数的侦听器的onInit()调用(参见此处:http://developer.android.com/reference/android/speech/tts/TextToSpeech.OnInitListener.html)。
在语音引擎已经准备就绪的情况下,视图触摸最有可能发生得很晚。更具体地说,我怀疑事情发生的顺序如下:
tts = new TextToSpeech(this,this)tts.speak("Check Check", TextToSpeech.QUEUE_FLUSH, null); (这不起作用)onInit()将被调用,指示TextToSpeech对象已准备就绪。tts.speak("Check Check Check", TextToSpeech.QUEUE_FLUSH, null);。(这项工程)如您所见,只有在speak()调用之后出现的onInit()调用才能实际工作。
https://stackoverflow.com/questions/29498404
复制相似问题