Не удается зарегистрировать голосовой триггер на стекле

Мое приложение Glass не может найти «имя» для голосового триггера. Команда отображается в списке «ок, стекло...», но я получаю это исключение при установке приложения:

12-27 18:11:31.372      460-460/? W/VoiceTrigger﹕ Unable to get info for trigger: ComponentInfo{com.my_foo2/com.my_foo2.Glass.UiService}
android.content.pm.PackageManager$NameNotFoundException: ComponentInfo{com.my_foo2/com.my_foo2.Glass.UiService}
        at android.app.ApplicationPackageManager.getServiceInfo(ApplicationPackageManager.java:253)
        at com.google.android.glass.app.VoiceTrigger.getInfo(VoiceTrigger.java:290)
        at com.google.android.glass.app.VoiceTrigger.loadLabel(VoiceTrigger.java:263)
        at com.google.glass.home.voice.menu.MainMenuGrammarLoader.getDisambiguationGraph(MainMenuGrammarLoader.java:124)
        at com.google.glass.home.voice.menu.MainMenuGrammarLoader.reloadDisambiguationConfigs(MainMenuGrammarLoader.java:77)
        at com.google.glass.home.voice.menu.MainMenuGrammarLoader.reloadGrammars(MainMenuGrammarLoader.java:73)
        at com.google.glass.home.voice.menu.MainMenuGrammarLoader.registerForUpdates(MainMenuGrammarLoader.java:137)
        at com.google.glass.input.VoiceInputHelper.registerGrammarLoaders(VoiceInputHelper.java:576)
        at com.google.glass.input.VoiceInputHelper.dispatchVoiceServiceConnected(VoiceInputHelper.java:571)
        at com.google.glass.input.VoiceInputHelper.access$400(VoiceInputHelper.java:41)
        at com.google.glass.input.VoiceInputHelper$2.handleMessage(VoiceInputHelper.java:171)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4424)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
        at dalvik.system.NativeStart.main(Native Method)

Вот объявление службы xml:

<service
        android:name=".Glass.UiService"
        android:label="@string/app_name"
        android:icon="@drawable/main_icon"
        android:enabled="true" >
        <intent-filter>
            <action android:name="com.google.android.glass.action.VOICE_TRIGGER" />
        </intent-filter>
        <meta-data
            android:name="com.google.android.glass.VoiceTrigger"
            android:resource="@xml/sb_show" />
    </service>

Кажется, я делаю то же самое, что и примеры кода, но продолжаю получать это исключение. мысли?

ИЗМЕНИТЬ

sb_show.xml это

<trigger keyword="@string/show_voice_trigger"/>

и показать голосовой триггер - это моя строка триггера ("показать бла")


person kolosy    schedule 28.12.2013    source источник
comment
Не могли бы вы также включить содержимое xml/sb_show.xml?   -  person Sloloem    schedule 28.12.2013
comment
Я согласен с @tony-allevato - попробуйте полное имя пакета для вашего приложения в service@android:name   -  person ghchinoy    schedule 29.12.2013


Ответы (2)


com.my_foo2.Glass.UiService — правильное полное имя для вашего класса обслуживания, верно? И я предполагаю, что атрибут package вашего тега manifest равен com.my_foo2?

Если да, можете ли вы попробовать использовать полное имя класса в атрибуте android:name вашего тега service вместо сокращенной версии с префиксом точки и посмотреть, повлияет ли это?

person Tony Allevato    schedule 28.12.2013

Таким образом, проблема, похоже, была связана с частью «устранения неоднозначности» трассировки стека, и само исключение, похоже, не имело значения.

Строка была «record a», и, похоже, это сбило с толку распознаватель речи. «Записать видео» продолжало работать, но когда я изменил «записать» на «получить», все заработало нормально.

person kolosy    schedule 29.12.2013
comment
Была ли запись полной строки триггера точно такой же, как вы ее напечатали, или вы опустили ее часть? В любом случае, это звучит так, как будто это все еще стоит зарегистрировать как ошибку в нашем трекере ошибок, чтобы мы могли изучить ее, собрав как можно больше подробностей: code.google.com/p/google-glass-api/issues/list - person Tony Allevato; 30.12.2013
comment
я оставляю существительное после аута, а остальное правильно. я зарегистрирую ошибку. - person kolosy; 30.12.2013