2015-11-20 65 views
2

我在我的應用程序中有谷歌語音識別。if else actions/array

現在我試圖通過語音開始操作。
這裏是我的onActivityResult

@Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
      ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      // add commands 


     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

所以我會從數組「匹配」獲取關鍵字的代碼。那麼'匹配'數組應該是這樣嗎?

String[] matches = {"rotate","rotate clockwise"}; 

兩行代碼上的「匹配」都是灰色的,據說它們從來沒有使用過。

然後回到onActivityResult。我應該如何爲這些行爲制定代碼。像這樣?

if ("closer".equalsIgnoreCase(command.getText().toString())) { 
PUT CODE HERE 
} 

但該代碼是爲editText,我如何修改它以使用谷歌語音。

+3

目前還不清楚你想要達到的目標。請重新表達你的問題。 – Lingviston

+0

我在我的應用程序中有谷歌語音識別。現在我想說一個字,一些代碼將運行。這是一個例子。如果我有一個編輯文本,並且我想能夠輸入一個單詞並且一些代碼將運行。下面是一些代碼:http://i.imgur.com/tZNcjDr.png .....但是不是輸入一個單詞,而是說一個字。 – user5560712

回答

0

您可以遍歷接收到的數組並檢查是否有匹配的值。

如:

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

    ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

    if(isStringMatch("closer", matches)){ 
     // String match => execute your code 
    } 

} 

這是isStringMatch()方法:

private boolean isStringMatch(String str, ArrayList<String> list){ 

    for(int i=0; i<list.size(); i++){ 
    if(str.equalsIgnoreCase(list.get(i))){ 
     return true; 
    } 
    } 

    return false; 
}