【发布时间】:2015-02-17 14:47:47
【问题描述】:
我知道我可以通过直接从磨损主屏幕调用语音命令(例如启动 MyApp)来启动我的应用程序启动器活动,但我想用相同的机制调用其他活动,即使用语音命令,例如 start B where B是我的活动的名称,而不是启动器活动。我想从 Wear 主屏幕本身启动 Activty B,而不是通过我的应用程序打开。类似于应用程序启动器活动可以从 Wear 主屏幕启动。Android 是否磨损支持这个功能吗?请帮忙
【问题讨论】:
我知道我可以通过直接从磨损主屏幕调用语音命令(例如启动 MyApp)来启动我的应用程序启动器活动,但我想用相同的机制调用其他活动,即使用语音命令,例如 start B where B是我的活动的名称,而不是启动器活动。我想从 Wear 主屏幕本身启动 Activty B,而不是通过我的应用程序打开。类似于应用程序启动器活动可以从 Wear 主屏幕启动。Android 是否磨损支持这个功能吗?请帮忙
【问题讨论】:
可以的。
@Override
protected void onCreate(Bundle savedInstanceState) {
try {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent voiceIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
voiceIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
startActivityForResult(voiceIntent,SPEECH_RECOGNIZER_CODE);
}
如上图所示启动Activity,它会打开一个默认的谷歌语音监听对话框。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
try { if (requestCode == SPEECH_RECOGNIZER_CODE && resultCode == RESULT_OK) {
List<String> results = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String spokenText = results.get(0);
}
在您的活动中实施上述方法。通过将字符串“spokenText”与活动名称匹配,您可以启动该活动。
【讨论】:
您口头调用的活动会不时更改还是总是第二个活动?
【讨论】:
好吧,我可以想到一个粗略的解决方法,我假设您已将“android:label”添加到您的启动器活动中,以便通过磨损主屏幕上的语音命令调用该应用程序。将标签值添加为“secondactivity” “(或您要调用的活动名称 - 以便用户可以使用它而不必担心应用程序名称)。如果您在 OnCreate 方法本身中完成启动器活动并从那里打开第二个活动是否有问题?只是我的想法。
【讨论】: