这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_sample);
}
@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
// Pass through to super to setup touch menu.
return super.onCreatePanelMenu(featureId, menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
switch (item.getItemId()) {
case R.id.dogs_menu_item:
// handle top-level dogs menu item
break;
default:
return true;
}
return true;
}
// Good practice to pass through to super if not handled
return super.onMenuItemSelected(featureId, item);
}
我正在尝试从我的活动启用上下文菜单。使用上面的代码" ok glass"应该显示在我活动的底部,但它没有显示。我使用的玻璃版本是21.3。
答案 0 :(得分:4)
你使用任何主题吗?
在清单中,移除android:theme="@style/AppTheme"
。
例如,更改
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
到
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
更改为默认主题后,我猜您可能不需要requestWindowFeature(Window.FEATURE_NO_TITLE);
,并且应该显示“ok glass”。
答案 1 :(得分:1)
您的代码似乎正确,但您是否尝试过实施菜单?
我不确定但是如果没有像onCreatePanelMenu
这样的正确覆盖功能,则无法激活上下文语音命令。
以下是Google提供的文档:Contextual Voice command
答案 2 :(得分:1)
在服务类中发布liveCard之前,您必须设置:
liveCard.setVoiceActionEnabled(true);
答案 3 :(得分:1)
您的代码似乎正确:/
您是否尝试过使用Cards
来构建Ui而不是使用setContentView(R.layout.activity_sample);
可能是造成这个问题的原因。