使用Glass,您可以通过“OK,Glass”菜单启动应用程序,似乎选择最近的匹配,除非命令为英里,您可以看到命令列表.
有没有从应用程序,或从语音提示(在最初的应用程序触发之后),给出一个类似的列表,并返回最近的匹配.
有没有从应用程序,或从语音提示(在最初的应用程序触发之后),给出一个类似的列表,并返回最近的匹配.
随机(非真实世界)的例子,一个显示颜色的应用程序,“OK Glass,显示颜色为红色”
“显示颜色”可能是您的声音触发器,似乎与“最近邻”方法中的玻璃相匹配,但是“红色”仅作为自由文本读取,可能容易被误认为“恐惧”或“头像”甚至“读”,因为没有区别“读”与“红”的方法.
有没有办法通过一个预先批准的选项(红,绿,蓝,橙*等)列表到这个阶段,或者在应用程序中的其他语音提示,以便用户可以看到列表并获得更准确的结果当有一组有限的预期响应(如主要的玻璃屏幕)时?
*好的,没有什么呵呵与橙色,我们可能是安全的那里
解决方法
Google GDK还不支持此功能.但是,某些库中已经有必要的功能,只要GDK本身不支持,就可以使用它们.
你要做什么:
你要做什么:
拉玻璃GlassVoice.apk:adb pull /system/app/GlassVoice.apk
>使用dex2jar将此apk转换为jar文件.
>将jar文件添加到构建路径
现在你可以使用这个库:
public class VoiceActivity extends Activity { private VoiceInputHelper mVoiceInputHelper; private VoiceConfig mVoiceConfig; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.voice_activity); String[] items = {"red","green","blue","orange"}; mVoiceConfig = new VoiceConfig("MyVoiceConfig",items); mVoiceInputHelper = new VoiceInputHelper(this,new MyVoiceListener(mVoiceConfig),VoiceInputHelper.newUserActivityObserver(this)); } @Override protected void onResume() { super.onResume(); mVoiceInputHelper.addVoiceServiceListener(); } @Override protected void onPause() { super.onPause(); mVoiceInputHelper.removeVoiceServiceListener(); } public class MyVoiceListener implements VoiceListener { protected final VoiceConfig voiceConfig; public MyVoiceListener(VoiceConfig voiceConfig) { this.voiceConfig = voiceConfig; } @Override public void onVoiceServiceConnected() { mVoiceInputHelper.setVoiceConfig(mVoiceConfig,false); } @Override public void onVoiceServiceDisconnected() { } @Override public VoiceConfig onVoiceCommand(VoiceCommand vc) { String recognizedStr = vc.getLiteral(); Log.i("VoiceActivity","Recognized text: "+recognizedStr); return voiceConfig; } @Override public FormattingLogger getLogger() { return FormattingLoggers.getContextLogger(); } @Override public boolean isRunning() { return true; } @Override public boolean onResampledAudioData(byte[] arg0,int arg1,int arg2) { return false; } @Override public boolean onVoiceAmplitudeChanged(double arg0) { return false; } @Override public void onVoiceConfigChanged(VoiceConfig arg0,boolean arg1) { } } }