2016-02-01 107 views
1

我需要你的幫助 即時通訊開發一個語音識別應用程序,執行諸如撥打電話,發送消息和熟悉的東西等操作.. 我設法在我的應用程序中編程語音識別,它工作的很好,但我似乎無法理解如何執行這些操作,例如,如果我告訴應用程序「致電邁克爾」,它是如何在編碼中完成的?如何在代碼中編寫調用action \ sms動作? 我真的很感激任何幫助!語音識別和執行動作

這裏是描述我如何從語音識別單詞的動作代碼:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
    { 
     //check speech recognition result 
     if (requestCode == VOICE_REC_CODE_REQUEST && resultCode == RESULT_OK) 
     { 
      //store the returned word list as an ArrayList 
      ArrayList<String> suggestedWords= data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); 
      startExecutingActions(suggestedWords); 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

的問題是,我如何執行這些動作\命令等;調用,發送短信,搜索網頁,瀏覽等等,並在startExecutingActions(SuggestedWords)函數中使用它們?

+0

你應該用正確的動作引發一個意圖:http://developer.android.com/reference/android/content/Intent.html – Bram

回答

2

在給出一個呼叫某人的例子,你將需要用電話動作開始一個新的意圖。 這裏是一個common intents的列表。

假設您認識到用戶希望撥打特定號碼(通過在電話簿中查找姓名)。然後你可以用電話號碼撥打你的「dialNumber」方法。

public void dialNumber(String pNumber){ 

    Intent intent = new Intent(Intent.ACTION_PHONE); 
    intent.setData(Uri.parse("tel:" + pNumber)); 
    if (intent.resolveActivity(getActivity().getPackageManager()) != null) { 
     startActivity(intent); 
    }; 
} 

您需要確保您的應用在AndroidManifest.xml中具有所有必需的權限。

+0

感謝您的回答, 每次用戶請求新聯繫人時是否必須找到號碼,還是有代碼可以從聯繫人列表中找到聯繫人,然後呼叫或短信聯繫人的方式? – Lena

1

添加以下代碼:

if (!suggestedWords.isEmpty()) { 
    if (suggestedWords.get(0).contains("call michael")) { 
     //Get michael contact phone number 
     //Call michael 
    } 
} 

如果你想取得聯繫的電話號碼,使用this


如果你想打電話,使用this

+0

對不起,也許我不清楚,我知道如何說出來,我是什麼不知道是如何告訴應用程序打電話。 – Lena

+0

@Lena看看我的編輯 –

+0

謝謝生病檢查出來。 – Lena