How to Navigate a Google Glass GDK Immersion Application using Voice Command only?

后端 未结 5 2133
北恋
北恋 2020-12-09 19:56

How would I go about coding a voice trigger to navigate Google Glass Cards?

This is how I see it happening:

1) \"Ok Glass, Start My Program\"

2) Applicatio         


        
5条回答
  •  忘掉有多难
    2020-12-09 20:04

    I'm writing out the entire code in detail since it took me such a long time to get this working.. perhaps it'll save someone else valuable time.

    This code is the implementation of Google Contextual Voice Commands as described on Google Developers here: Contextual voice commands

    ContextualMenuActivity.java

       package com.drace.contextualvoicecommands;
    
        import android.app.Activity;
        import android.os.Bundle;
        import android.view.Menu;
        import android.view.MenuItem;
        import com.drace.contextualvoicecommands.R;
        import com.google.android.glass.view.WindowUtils;
    
        public class ContextualMenuActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle bundle) {
            super.onCreate(bundle);
    
            // Requests a voice menu on this activity. As for any other
            // window feature, be sure to request this before
            // setContentView() is called
            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.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;
                    case R.id.cats_menu_item:
                        // handle top-level cats menu item
                        break;
                    case R.id.lab_menu_item:
                        // handle second-level labrador menu item
                        break;
                    case R.id.golden_menu_item:
                        // handle second-level golden menu item
                        break;
                    case R.id.calico_menu_item:
                        // handle second-level calico menu item
                        break;
                    case R.id.cheshire_menu_item:
                        // handle second-level cheshire menu item
                        break;
                    default:
                        return true;
                }
                return true;
            }
            // Good practice to pass through to super if not handled
            return super.onMenuItemSelected(featureId, item);
        }
        }
    

    activity_main.xml (layout)

     
        
    
               
        
    

    strings.xml

    
    Contextual voice commands
    Voice commands
    Say "Okay, Glass"
    Dogs
    labrador
    golden
    Cats
    cheshire
    calico
    
    

    AndroidManifest.xml

     
    
        
    
        
    
        
    
           
                
                    
                
    
                
            
    
        
        
    

    It's been Tested and works great under Google Glass XE22 !

提交回复
热议问题