如何开启Android Open Application语音交互
How to enable Android Open Application voice interaction
根据 system voice command docs,您可以使用语音命令打开应用程序。例如OK Google - open foobar
。同样根据文档,此 默认情况下有效;无具体意图。
在我的示例开发应用程序中,这不起作用。我已经尝试向 intent-filter 添加一些操作和类别排列的组合,但到目前为止没有成功。
我的目标是最低 SDK 为 23,在 6.0.1 的设备上进行测试。
这应该有效吗?如果可以,我需要启用它对新的空 activity 项目有哪些更改?
据我所知,Google 只是遍历已安装应用程序的列表,如果找到 完全匹配 .[=13,则打开相应的应用程序=]
要对此进行测试,请使用以下 Intent
final String PACKAGE_NAME_GOOGLE_NOW = "com.google.android.googlequicksearchbox";
final String GOOGLE_NOW_SEARCH_ACTIVITY = ".SearchActivity";
final String APP_NAME = "Open " +getString(R.string.app_name);
final Intent startMyAppIntent = new Intent(Intent.ACTION_WEB_SEARCH);
startMyAppIntent.setComponent(new ComponentName(PACKAGE_NAME_GOOGLE_NOW,
PACKAGE_NAME_GOOGLE_NOW + GOOGLE_NOW_SEARCH_ACTIVITY));
startMyAppIntent.putExtra(SearchManager.QUERY, APP_NAME);
startMyAppIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(startMyAppIntent);
} catch (final ActivityNotFoundException e) {
e.printStackTrace();
}
如果这会打开您的应用程序,那么这只是您应用程序名称的语音问题,或者 Google 如何解释您的应用程序名称的发音。
我确实认为应该有一个选项可以将 'phonetic app label' 添加到应用程序的清单(或其他一些全局可用的配置文件),这样 Google 就可以打开您的应用程序,如果唯一的名称不够普遍,无法生成语音搜索结果。
如果这没有打开您的应用程序,请检查您是否在清单中正确定义了您的应用程序名称,如下所示:
<application
android:label="@string/app_name"
根据 system voice command docs,您可以使用语音命令打开应用程序。例如OK Google - open foobar
。同样根据文档,此 默认情况下有效;无具体意图。
在我的示例开发应用程序中,这不起作用。我已经尝试向 intent-filter 添加一些操作和类别排列的组合,但到目前为止没有成功。
我的目标是最低 SDK 为 23,在 6.0.1 的设备上进行测试。
这应该有效吗?如果可以,我需要启用它对新的空 activity 项目有哪些更改?
据我所知,Google 只是遍历已安装应用程序的列表,如果找到 完全匹配 .[=13,则打开相应的应用程序=]
要对此进行测试,请使用以下 Intent
final String PACKAGE_NAME_GOOGLE_NOW = "com.google.android.googlequicksearchbox";
final String GOOGLE_NOW_SEARCH_ACTIVITY = ".SearchActivity";
final String APP_NAME = "Open " +getString(R.string.app_name);
final Intent startMyAppIntent = new Intent(Intent.ACTION_WEB_SEARCH);
startMyAppIntent.setComponent(new ComponentName(PACKAGE_NAME_GOOGLE_NOW,
PACKAGE_NAME_GOOGLE_NOW + GOOGLE_NOW_SEARCH_ACTIVITY));
startMyAppIntent.putExtra(SearchManager.QUERY, APP_NAME);
startMyAppIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(startMyAppIntent);
} catch (final ActivityNotFoundException e) {
e.printStackTrace();
}
如果这会打开您的应用程序,那么这只是您应用程序名称的语音问题,或者 Google 如何解释您的应用程序名称的发音。
我确实认为应该有一个选项可以将 'phonetic app label' 添加到应用程序的清单(或其他一些全局可用的配置文件),这样 Google 就可以打开您的应用程序,如果唯一的名称不够普遍,无法生成语音搜索结果。
如果这没有打开您的应用程序,请检查您是否在清单中正确定义了您的应用程序名称,如下所示:
<application
android:label="@string/app_name"