2016-02-01 62 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