3
我正在嘗試使語音驅動的應用程序,但是我遇到了一個主要問題。
My UtteranceProgressListener
無論我在哪裏放置Speak方法,Class都不會調用任何給定的方法。UtteranceProgressListener不會調用函數
這裏是我的代碼:
這是我的onCreate方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mContext = this;
voiceBtn = (Button) findViewById(R.id.startListeningBtn);
voiceBtn.setEnabled(false);
textToSpeech = new TextToSpeech(mContext,new botListener());
}
這是OnInitListner Imeplementation
public class botListener implements TextToSpeech.OnInitListener{
@Override
public void onInit(int i) {
if(i == TextToSpeech.SUCCESS)
{
int s = textToSpeech.setOnUtteranceProgressListener(new UtteranceProgressListener() {
@Override
public void onStart(String s) {
Toast.makeText(getApplicationContext(),"Done Speaking",Toast.LENGTH_SHORT).show();
}
@Override
public void onDone(String s) {
Toast.makeText(getApplicationContext(),s,Toast.LENGTH_SHORT).show();
}
@Override
public void onError(String s) {
Toast.makeText(getApplicationContext(),"Done Speaking",Toast.LENGTH_SHORT).show();
}
});
Log.d(TAG,String.valueOf(s));
int result = textToSpeech.setLanguage(Locale.ENGLISH);
if(result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED){
Log.e(TAG,"Language not supported");
Intent installLanguage = new Intent(TextToSpeech.Engine.ACTION_INSTALL_TTS_DATA);
startActivity(installLanguage);
}
Log.d(TAG,"Started Voice Speaker");
}
else{
Log.e(TAG,"initialization failed");
}
}
}
現在,當我按下按鈕,發生的事件是:
public void initVoiceRecog(View v){
//Toast.makeText(mContext,"Clicked",Toast.LENGTH_SHORT).show();
Speak("hello","1");
// does some other things here after that
}
private void Speak(String text,String identifierID){
if(Build.VERSION.SDK_INT>21) {
Bundle params = new Bundle();
params.putString(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,identifierID);
textToSpeech.speak(text, TextToSpeech.QUEUE_FLUSH, params, identifierID);
}
else{
// ttsMap is a HashMap
ttsMap.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,identifierID);
textToSpeech.speak(text,TextToSpeech.QUEUE_FLUSH,ttsMap);
}
}
我的問題是,打招呼後,它不火的OnStart()
或OnError()
或OnDone()
方法。這是爲什麼發生?我試過setOnUtteranceListner()
以及相同的結果。它不會觸發任何方法,敬酒不會出現。
請爲此解決方法或解決方法。
我想上的設備有:
沒有看起來錯誤,但嘗試移動你的ProgressListener在onInit之外 - 我的意思是讓你的主要活動實現兩個而不是botListener類 – brandall
我的活動擴展了appcompatactivity,我不能擴展utteranceprogresslistener。那我該怎麼做呢? – Yashodhan
好吧,我試過但仍然沒有結果。我現在已將utteranceProgressListener保存在OnInit中。沒有運氣。 – Yashodhan