我有一個母版的UI類,它有一個實例化一個實現SpeechRecognizer庫的類來轉換文本語音的類的按鈕。SpeechRecognizer類沒有得到結果?
btnSpeak = (ImageButton) findViewById(R.id.btnSpeak);
btnSpeak.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startNoiseProcessService();
}
});
startNoiseProcessService()是一個調用另一個類對象的函數。
public void startNoiseProcessService() {
StreamService ss = new StreamService(this);
String s = ss.startStreaming();
if (s.equals("NA")) {
Toast t = Toast.makeText(getApplicationContext(),threadCnt +
"Opps! Your device doesn't support Speech to Text",
Toast.LENGTH_SHORT);
t.show();
}
}
StreamService類實現SpeechRecognizer API。
這StreamService類被調用完美罰款,問題在於我無法從onResults(Bundle)
方法計算結果後的語音轉換文本。
我需要轉換的文本來更新我的文本框,我沒有得到它。
startStreaming()實現:基於您的評論
public String startStreaming() {
text = "";
if (!SpeechRecognizer.isRecognitionAvailable(context)) {
text = "NA";
return text;
}
Log.d(TAG, "started taking input");
sr = SpeechRecognizer.createSpeechRecognizer(context);
Intent intent = new Intent(
RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 3);
sr.setRecognitionListener(new mylistener());
sr.startListening(intent);
}
當你調試你的代碼時,'onResults'永遠不會被調用?你在物理設備上測試這個嗎?你是否嘗試在聽衆的其他方法上加入斷點,以查看是否有其他方法被調用? –
onResults方法正在調用,但此方法在另一個從UI類調用的類中。在調用此方法以在UI類中顯示結果時,我需要此方法的結果。 – Aki008