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に同意します!どうもありがとうございます !私はインターフェイスを持つ本当にnoobです:P。 btw! SpeechRecognitionについて知っていれば、私の最後の投稿を確認することができます。誰かがそれを手伝ってくれたらとても感謝しています! –
@FranciscoDurdinGarcia私は音声認識に精通していませんが、何か疑問があればコーディングの実装で助けてくれるでしょう – Pooya