2017-02-01 19 views
1

はここに私のコードです:SpeechRecognizer(Android音声認識)を使用しようとしていますが、起動していませんか?

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_create_route); 

    SetupButton(); 

} 

private void SetupButton() 
{ 
    Button createNewMessage = (Button) findViewById(R.id.button); 

    createNewMessage.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      ListenForNewMessage(); 
     } 
    }); 
} 

private void ListenForNewMessage() 
{ 
    final SpeechRecognizer newDeliverySpeech = SpeechRecognizer.createSpeechRecognizer(this); 
    RecognitionListener newDeliveryRecognitionListener = new RecognitionListener() { 
     @Override 
     public void onReadyForSpeech(Bundle params) { 
      Log.d("SpeechListening","onReadyForSpeech"); 
     } 
     @Override 
     public void onBeginningOfSpeech() { 
      Log.d("SpeechListening","onBeginningOfSpeech"); 
     } 

     @Override 
     public void onRmsChanged(float rmsdB) { 
      //do nothing 
     } 

     @Override 
     public void onBufferReceived(byte[] buffer) { 
      //do nothing 
     } 

     @Override 
     public void onEndOfSpeech() { 
      Log.d("SpeechListening","onEndOfSpeech"); 
     } 

     @Override 
     public void onError(int error) { 
      //do nothing 
     } 

     @Override 
     public void onResults(Bundle results) { 
      ArrayList<String> userMessage; 
      userMessage = results.getStringArrayList(RESULTS_RECOGNITION); 
      PushNewDelivery(userMessage); 
     } 

     @Override 
     public void onPartialResults(Bundle partialResults) { 
      //do nothing 
     } 

     @Override 
     public void onEvent(int eventType, Bundle params) { 
      //do nothing 
     } 
    }; 
    newDeliverySpeech.setRecognitionListener(newDeliveryRecognitionListener); 
    if (newDeliverySpeech.isRecognitionAvailable(getApplicationContext())) 
    { 
     Log.d("SpeechListening","started listening hopefully"); 
     newDeliverySpeech.startListening(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)); 
    } 
} 

}

問題がある、唯一のがうまくいけばがログに記録されて聴き始め、RecognitionListenerは決してonReadyForSpeech()またはと呼ばれるそのメソッドのいずれかを持っていません。

ここで間違っていることを教えてもらえますか?

答えて

1

あなたは、

Intent mSpeechIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
    mSpeechIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
    mSpeechIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true); 
    mSpeechIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "voice.recognition.test"); 
    mSpeechIntent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 1); 
    newDeliverySpeech.startListening(mSpeechIntent); 
+0

いいえ、ありません変更するには、この行の下に

newDeliverySpeech.startListening(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)); 

を変更することができます。ドキュメントでは、デフォルトとしてインテントを残しても問題ありません –

関連する問題