Я пытаюсь реализовать контекстные голосовые команды в своем приложении Glass, описанном в documentation.Устранение фокуса активности после контекстных голосовых команд
У меня есть FrameLayout внутри моего макета, и в моей деятельности я реализую OnKeyDown, чтобы распознавать краны. Однако, когда пользователь говорит «ОК стекло», а затем выбирает одну из доступных команд, возвращается такая же активность, но не отвечает (я даже не могу закрыть приложение, сползая вниз).
Я попытался использовать requestFocus() на FrameLayout несколькими способами, но у него не было никаких эффектов. Как мне вернуть фокус, не перезагружая работу?
По сути, это код, который я до сих пор для основной деятельности:
public class MainActivity extends Activity {
public static String TAG = "DummyProject::MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(WindowUtils.FEATURE_VOICE_COMMANDS);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreatePanelMenu(int featureId, Menu menu) {
if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
getMenuInflater().inflate(R.layout.main, menu);
return true;
}
return super.onCreatePanelMenu(featureId, menu);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.layout.main, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
if (featureId == WindowUtils.FEATURE_VOICE_COMMANDS) {
switch (item.getItemId()) {
case R.id.awesome:
Log.i(TAG, "Selected!");
break;
default:
return true;
}
return true;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
public boolean onKeyDown(int keycode, KeyEvent event) {
if(keycode == KeyEvent.KEYCODE_DPAD_CENTER) {
Log.i(TAG, "tap!");
return true;
}
return super.onKeyDown(keycode, event);
}
}
Для этого примера, OnKeyDown не дозвонился после того как я выбрать любой из опций меню «ОК стекла».
Заранее спасибо.
Вы избили меня до него. – w9jds
Привет, Шанкар, спасибо за ответ. Однако это не будет полностью работать. Опция «ok glass» также исчезает при возврате активности. В [документации] (https://developers.google.com/glass/develop/gdk/voice#contextual_voice_commands) Google говорит, что «... голосовая команда« ok, glass »автоматически появляется снова в разделе нижнего колонтитула экран, готовый принять новую голосовую команду, пока активность остается в фокусе ». Поэтому я предполагаю, что есть что-то связанное с этим, но я не нашел способ вернуть фокус. –