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);
}
但它顯示「未知問題」,如下網址的圖片。
但在logcat中沒有任何錯誤消息。
如何修改?
它不會運行到onActivityResult。所以我無法獲得ResultCode。 – brian
您的'if'子句不會執行,因爲條件從來不是真的,但您確定'onActivityResult'永遠不會被調用嗎?嘗試添加到方法的開始:'Log.d(「Recognition」,「Result code =」+ ResultCode);' – Jong
我試着在切換前的onActivityResult的第一行獲取ResultCode。但它不顯示任何日誌。所以我認爲它永遠不會被調用。 – brian