0
我正在开发一个应用程序SpeechRecognizer
。我将在不同的活动中将它用于不同的用途,并且它有点脏,所有时间都将相同的代码添加到不同的类中。所以我将自定义RecognitionListener
移到了一个新班级。这样我就可以在我想要从我的活动中初始化它。但是我不能找到一种方法来接收听众的结果(在这种情况下,可以识别语音的可能值的ArrayList
)以使用它。从另一个活动接收监听器onResults()
我试图通过一个接口来实现它,但我认为我是以一种错误的方式实现它。我的监听器的代码是这样的:
public class SpeechRecognitionListener implements RecognitionListener
{
private final String TAG = "SpeechRecognitionListener";
private Intent mSpeechRecognizerIntent;
private SpeechRecognizer mSpeechRecognizer;
public SpeechRecognitionListener(Intent speechRecognizerIntent, SpeechRecognizer speechRecognizer) {
mSpeechRecognizerIntent = speechRecognizerIntent;
mSpeechRecognizer = speechRecognizer;
}
@Override
public void onBeginningOfSpeech()
{
//Log.d(TAG, "onBeginingOfSpeech");
}
@Override
public void onBufferReceived(byte[] buffer)
{
}
@Override
public void onEndOfSpeech()
{
//Log.d(TAG, "onEndOfSpeech");
}
@Override
public void onError(int error)
{
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
//Log.d(TAG, "error = " + error);
}
@Override
public void onEvent(int eventType, Bundle params)
{
}
@Override
public void onPartialResults(Bundle partialResults)
{
}
@Override
public void onReadyForSpeech(Bundle params)
{
Log.d(TAG, "onReadyForSpeech"); //$NON-NLS-1$
}
@Override
public void onResults(Bundle results)
{
//I want to recieve this array in my main activity
ArrayList<String> matches = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
}
@Override
public void onRmsChanged(float rmsdB)
{
}
}
我只是想收到onResult()
阵列以我现在的活动与它合作。希望有人能帮助我!非常感谢!
你是太快:)这是正确的答案 –
我同意@DavidSeroussi!非常感谢 !我真的很喜欢接口:P。顺便说一句!如果您对SpeechRecognition有所了解,可以查看我的最后一篇文章,如果有人帮助我,我将非常感激! –
@FranciscoDurdinGarcia我不熟悉语音识别,但在编码实现中,如果有任何问题我很乐意帮助 – Pooya