2013-03-05 58 views
0

我試圖做一個Android應用程序,其中Android的語音識別與陣列

  • 用戶說一句話
  • 這個詞將被保存到變量what_you_say
  • 如果匹配我有什麼已存儲在陣列中,用戶會說第二個短語

...等等。問題是,我創建了一個數組並在其中存儲了我希望程序比較用戶所說的單詞的單詞,但它不起作用!它一直給我虛假,我不知道爲什麼。這裏是我的代碼:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
// TODO Auto-generated method stub 
if (requestCode ==check && resultCode == RESULT_OK){      // voice to text 

TextView display2=(TextView)findViewById (R.id.TOF); 

String[] words = { "zero", "one", "two" }; 
for (int w=0;w<3;w++) 
{ 
    ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
    for(int j=0;j<results.size();j++) { 

     String what_you_say = results.get(j); 
     if (what_you_say.equalsIgnoreCase(words[w])) 
      display2.setText("true, continue dear"); 
      //System.out.println("true, continue"); 
     else 
     { 
      display2.setText("False, repeat again"); 
      //System.out.println("False, repeat again"); 
     } 
    } 
} 
}//end of for 
super.onActivityResult(requestCode, resultCode, data); 

}} 
+0

什麼是 '不工作' 是什麼意思?什麼都不顯示?作爲一種調試方法,您是否試圖顯示存儲在'what_you_say'中的實際單詞? – corsiKa 2013-03-05 20:29:20

+1

爲什麼你的for循環從'1'開始? – Maroun 2013-03-05 20:30:23

+0

喜歡它沒有給出錯誤,,,但是當我在手機上運行它,,它只是突然關閉,或屏幕變黑,,, @corsiKa – 2013-03-05 20:32:28

回答

3

指數從,而不是開始。你會得到一個ArrayIndexOutOfBoundsException

將其更改爲:

String[] words = { "zero", "one", "two" }; 
for (int w=0;w<3;w++) 
{ 
    for(int j=0;j<results.size();j++) { 
     what_you_say = results.get(j); 
     if (what_you_say.equalsIgnoreCase(words[w])) 
      System.out.println("true, continue"); 
     else 
     { 
      System.out.println("False, repeat again"); 
     } 
    } 
} 

另外要注意的是,如果你不問what_you_say循環內,並說這等於zero,你的輸出將是:

真,繼續

假,再次重複

假,再重複

我想你打算在循環的每次迭代中要求what_you_say。 (代碼編輯

+0

開始,,,我編輯我的代碼,如你所說,,現在它只是給了我假(代碼是在頂部) – 2013-03-05 21:27:51

+0

'字符串what_you_say = results.get(0);'你是傳遞相同的'String'。 (** 0 **不會改變!) – Maroun 2013-03-05 21:31:12

+0

,,,好的我把:String what_you_say = results.get(x); \t \t x ++;但現在應用程序突然關閉,並給出例外! – 2013-03-05 21:41:09