Почему VoiceListener на основе Glass/GDK перехватывает VoiceCommand только один раз в XE16?

В поисках способа реализации контекстных голосовых команд с помощью Google GDK я наткнулся на этот сообщение. Тем не менее, код примера работает только в XE12, а не в XE16+. Недавно я тестировал этот код, но метод onVoiceCommand(...) вызывается только один раз за время существования связанного действия. Я ожидаю, что голосовая команда пользователя может быть получена несколько раз, т. Е. Если пользователь возвращается к определенному действию из другого.

Я даже пытался удалить и повторно подключить Activity и/или Listener к GDK, встроенному в VoiceInputHelper, когда Activity находится в фоновом режиме с помощью метода onPause(...) и onResume(...), но безуспешно. Любые полезные идеи, почему голосовые команды «исчезли» после одного события и как их можно «повторно включить»?

Я могу проверить ваши идеи/решения, поскольку у меня есть устройство Glass, и я быстро проверяю любой ввод.


person MWiesner    schedule 03.05.2014    source источник
comment
Вы должны опубликовать больше кода. Пробовали ли вы изучать жизненный цикл Android и управлять ресурсом прослушивания через него. Я думаю, что если вы убьете элемент в onPause и повторно инициализируете его onResume, все может сработать для вас. Ваша проблема звучит так, как будто кто-то поместил код в onCreate и не знает, что onCreate не вызывается при возобновлении действия.   -  person Mark Scheel    schedule 05.05.2014
comment
Как указано в моем исходном сообщении, код можно найти здесь: stackoverflow.com/questions/21168267. Как видите, методы onResume(...) используются... и вызываются. Я проверил это с помощью отладчика;)   -  person MWiesner    schedule 05.05.2014


Ответы (1)


Исходный пример на stackoverflow.com/questions/21168267 нуждается в небольшом изменении: для непрерывной работы null необходимо вернуть в onVoiceCommand().

person pscholl    schedule 06.05.2014
comment
Спасибо за ответ! Это помогает здесь: проверенное и подтвержденное решение для XE16.x - возможно, ребята из Google могут изменить его в следующих выпусках, поэтому имейте в виду, что return null может измениться в будущем. - person MWiesner; 09.05.2014
comment
Он все еще работает в XE18.11 - только что протестировал решение; единственная необходимая адаптация заключалась в том, чтобы снова получить внутренний GlassVoice.apk в его текущей версии с самого устройства. Остальная часть примера кода работает нормально во время выполнения. - person MWiesner; 27.06.2014