2013-05-20 45 views
2

我在Android的語音識別應用程序,我想比較,我有我自己的字符串 得到的結果,這是我的代碼分析的命令導致

if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) 
     { 

      ArrayList<String> matches = data.getStringArrayListExtra(
        RecognizerIntent.EXTRA_RESULTS); 
      for(String resultString: matches) 
      { 

      if(resultString.equalsIgnoreCase("go")) 
       Toast.makeText(getBaseContext(), "go", Toast.LENGTH_SHORT); 
      else if(resultString.equalsIgnoreCase("stop")) 
       Toast.makeText(getBaseContext(), "stop", Toast.LENGTH_SHORT); 
      else if(resultString.equalsIgnoreCase("back")) 
       Toast.makeText(getBaseContext(), "back", Toast.LENGTH_SHORT); 
      else if(resultString.equalsIgnoreCase("right")) 
       Toast.makeText(getBaseContext(), "right", Toast.LENGTH_SHORT); 
      else if(resultString.equalsIgnoreCase("left")) 
       Toast.makeText(getBaseContext(), "left", Toast.LENGTH_SHORT); 
      else 
       Toast.makeText(getBaseContext(), "wrong command use go , stop , back , right or left", Toast.LENGTH_SHORT); 


      } 
     } 

我一直在使用matches.contains("go");也嘗試 即使這似乎並不奏效。請幫我

+0

什麼'resultString'看起來像在調試器?可能需要「修剪()」它。 –

+0

你可以看到這個吐司**錯誤的命令使用去,停,回,右或左** – bakriOnFire

+0

你使用正確的上下文(也許getContext,或getApplicationContext會更好)?你沒有真正說出什麼問題。吐司沒有顯示,或者你得到一個例外..?你「匹配」產生任何價值嗎? – iBecar

回答

1

的結果是空間分隔的String S,所以你要分割你resultString

使用這樣的循環:

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 
    if (requestCode == VOICE_RECOGNITION_REQUEST_CODE) 
    { 
     if (resultCode == RESULT_OK) 
     { 
      List<String> heard = data 
          .getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      Set<String> matchThese = new HashSet<String>(); 
      matchThese.add("tree"); 
      matchThese.add("car"); 

      for (String said : heard) 
      { 
       String[] saidWords = said.split("\\s"); 
       for (String wordSaid : saidWords) 
       { 
        if (matchThese.contains(wordSaid)) 
        { 
         tts.speak("You said the correct word", 
          TextToSpeech.QUEUE_FLUSH, null); 
        } 
       } 
      } 
     } 
    } 
} 

更重要的是使用內GAST,一個開源的工具這個項目有一些語音識別工具。

具體來說,你至少需要WordMatcherWordList