2012-11-30 140 views
0

我的軟件架構如下:
TabActivity是一個TabHost活動。
它包含2個ActivityGroup:AGroup和BGroup。
AGroup包含2個活動:A1Activity和A2Activity。如何在Android上實現識別器

我想在A1Activity中實現識別器。
我的代碼如下:

private static final int VOICE_RECOGNIZER_REQUEST_CODE = 0x1008; 
public void Recognizera() { 
     PackageManager pm = getPackageManager(); 
     List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0); 

     if(activities.size() != 0) { 
      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, "語音辨識"); 
       startActivityForResult(intent, VOICE_RECOGNIZER_REQUEST_CODE); 
      } 
      catch(Exception e) { 
       e.printStackTrace(); 
      } 
     } 
} 
@Override 
protected void onActivityResult(int RequestCode, int ResultCode, Intent data) { 
    switch(RequestCode) { 
    case VOICE_RECOGNIZER_REQUEST_CODE: 
     if(RequestCode == VOICE_RECOGNIZER_REQUEST_CODE && ResultCode == RESULT_OK) { 
      ArrayList<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 

      for(int i = 0; i < results.size(); i++) { 
       System.out.println("results " + results.get(i)); 
      } 
     } 
     break; 
    } 
    super.onActivityResult(RequestCode, ResultCode, data); 
} 

但它顯示「未知問題」,如下網址的圖片。
enter image description here
但在logcat中沒有任何錯誤消息。
如何修改?

回答

1

發生這種情況是因爲在語音識別過程中遇到錯誤。 ResultCode參數將是錯誤代碼,其中一個錯誤here。首先找出那個錯誤是什麼,所以你可以進一步調查。

+0

它不會運行到onActivityResult。所以我無法獲得ResultCode。 – brian

+0

您的'if'子句不會執行,因爲條件從來不是真的,但您確定'onActivityResult'永遠不會被調用嗎?嘗試添加到方法的開始:'Log.d(「Recognition」,「Result code =」+ ResultCode);' – Jong

+0

我試着在切換前的onActivityResult的第一行獲取ResultCode。但它不顯示任何日誌。所以我認爲它永遠不會被調用。 – brian