Create “ok glass” style menu, within glass app

后端 未结 4 1043
慢半拍i
慢半拍i 2021-02-02 03:08

I have just begun developing for Google Glass, and I knew the GDK if fairly new so this may not be possible yet, but here\'s what I\'m trying to to:

As with the \"make a

相关标签:
4条回答
  • 2021-02-02 03:39

    Now you can use framework apis to show an ok glass menu on your activity, check this Docs about contextual voice commands

    https://developers.google.com/glass/develop/gdk/voice#contextual_voice_commands

    0 讨论(0)
  • 2021-02-02 03:42

    You can call an intent to display the Voice Recognizer after your Activity has started. So, you could have your voice trigger and prompt from the launch, and then, in your Activity's onResume(), call the Voice Recognizer, with some kind of prompt (or you could just string the initial speech collected into this as the prompt):

        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra( RecognizerIntent.EXTRA_PROMPT, "ok glass, here's my prompt" );
        startActivityForResult(intent, 0);
    

    You then would need an onActivityResult() method to process the return form the VoiceRecognizer.

    This is the described in the GDK docs: https://developers.google.com/glass/develop/gdk/input/voice

    Not sure if there is any other way.

    0 讨论(0)
  • 2021-02-02 03:43

    I found this answer from another SO question that seems exactly like you want. I have tried it myself for my own Glassware and it works perfectly. As mentioned in the answer below, one caveat that other apps that use the same "ok glass" voice command will share the submenu; in the following example, for instance, some other app may add other games such as "golf." Another potential problem is that you must have an Activity or Service for each of the options you want in the submenu.

    "If you have multiple activities/services installed on Glass that have the same voice trigger intent filter, all of their names (based on the android:label attribute of the <activity> or <service> tag in AndroidManifest.xml) will appear in a disambiguation "submenu" when you speak that voice trigger.

    For example (assume that res/xml/play_a_game_trigger.xml represents a voice trigger for the string "play a game"):

    <activity android:label="Tennis">
        <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/play_a_game_trigger" />
    </activity>
    <activity android:label="Bowling">
        <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/play_a_game_trigger" />
    </activity>
    

    would give you a voice menu flow that looks like

    ok glass → play a game → Tennis
                             Bowling
    

    Do note, however, that this menu would also include activities/services from other APKs that use the same voice trigger as well.

    You can find more details at the Voice Input page of the GDK documentation."

    0 讨论(0)
  • 2021-02-02 03:53

    Are you asking if you can add a voice command to Glass that will trigger your app? If so - absolutely. This is, in fact, the suggested way to start an app on the GDK.

    See https://developers.google.com/glass/develop/gdk/input/voice#launching_glassware for the details, but basically you'll

    1. Add resources to res/values/strings.xml describing the trigger and prompt
    2. Create a resource in res/xml/<my_voice_trigger>.xml that uses the string value as the keyword and sets the input prompt
    3. Register an intent filter for the VOICE_TRIGGER action

    (As an aside, it appears that verbs are the best voice triggers to use - they flow more naturally with the "ok, glass" menu item.)

    0 讨论(0)
提交回复
热议问题