2012-08-25 26 views
1

我點擊一個按鈕時有一個語音識別器意圖。語音識別器意圖不回收OnActivityResult中的數據

voiceSearch.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View view) { 
     try{ 
      Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); 
      intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, 
        RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); 
      intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speak Now..."); 
      startActivityForResult(intent, REQUEST_CODE); 
     } 
     catch (ActivityNotFoundException e) { 
      Log.v("Speech", "Could not find any Speech Recognition Actions"); 
     } 

    } 
}); 

在活動結果我作爲

 @Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    System.out.println("Request code++++++++++++++++++++++++++++"+requestCode); 
    System.out.println("Result Code+++++++++++++++++++++++++++++"+resultCode); 
    System.out.println("Data++++++++++++++++++++++++++++++++++++"+data); 
    System.out.println("Language"+data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE)); 
    System.out.println("data.getDataString()"+data.getDataString()); 
    if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) { 
    if (data != null && data.getData() != null) { 
      String searchKey = data.getData().toString(); 
      System.out.println("Search Key++++++++++++++++++++++++"+searchKey); 
      searchEditText.setText(searchKey); 
      webView.loadUrl(url+"searchKey"); 

     } 
} 
} 

我得到的輸出是,當我在onActivityResult我打印的代碼是

請求代碼,我得到的1

結果代碼我得到-1

我得到的數據Intent { (has extras) }

語言data.getStringExtra(RecognizerIntent.EXTRA_LANGUAGE) as null

Data.getDataString() as null

有人能讓我知道我可能會在代碼中犯什麼錯。

謝謝。

+0

你的變量'REQUEST_CODE'等於'1',對吧?否則,這是另一個活動的結果。 – Hbcdev

+0

@Hbcdev是的,我的REQUEST_CODE等於'1'。 – Mukunda

回答

4

我認爲你試圖以錯誤的方式得到結果。它們不存儲在數據字符串中,而是存儲在匹配數組中。

您可以通過執行獲得數組:

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

陣列中的每個條目將是代表一個猜識別器有什麼用戶說了多字串。

+0

我得到的結果代碼是'-1',那麼'if'語句根本不會被執行,所以如果它不執行'if'語句中的代碼,我怎麼能得到數據。謝謝。 – Mukunda

+0

感謝得到它完美的工作,但'onActivityResult'我無法使'webView'來加載URL,得到請求的Web服務不可用。但我可以通過加載url並在瀏覽器中看到相同的結果。 – Mukunda

+0

-1的結果代碼是正確的。 'RESULT_OK'被定義爲-1。 – Hbcdev