因此,我正在尝试开发一个应用程序,该应用程序使用语音识别来处理许多事件,例如拨打任何电话号码,打开其他应用程序,切换设置等。
到目前为止我所做的是实现调用功能,我被困的地方是如何打开另一个应用程序
我的代码到现在为止:
private void promptSpeechInput() {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Speech Prompt");
try {
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
} catch (ActivityNotFoundException a) {
Toast.makeText(getApplicationContext(), "Error Occured Try again",Toast.LENGTH_SHORT ).show();
}
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode,resultCode,data);
switch(requestCode) {
case REQ_CODE_SPEECH_INPUT : {
if (resultCode == RESULT_OK && null != data) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
txtSpeechInput.setText(result.get(0));
String arr[] = result.get(0).split(" ",2);
String firstWord = arr[0];
String secondWord = arr[1];
switch(firstWord) {
case "call":
callPhone(secondWord);
break;
case "open":
}
}
}
}
}
现在您可以看到我可以使用“开放”作为第一个单词,然后继续使用它。但我不知道如何获取当前安装在手机上的所有应用程序的列表。 请帮助?
答案 0 :(得分:0)
相关问题:How to enable Android Open Application voice interaction
从那里引用:“据我所知,谷歌只是迭代已安装的应用程序列表,并在找到完全匹配时打开相应的应用程序。”
此致
答案 1 :(得分:0)
获取设备上安装的所有应用程序/活动的列表:
final Intent Intent = new Intent(Intent.ACTION_MAIN, null);
Intent.addCategory(Intent.CATEGORY_LAUNCHER);
final List<ResolveInfo> packageAppsList = context.getPackageManager().queryIntentActivities(Intent, 0);
获取相关数据以在ResolveInfo上打开应用,请阅读以下内容:
for (ResolveInfo res : packageAppsList ){
//print it to logger etc.
res.loadLabel(getPackageManager().toString();
https://developer.android.com/reference/android/content/pm/ResolveInfo.html