android – 玻璃语音命令从给定列表中最接近的匹配

前端之家收集整理的这篇文章主要介绍了android – 玻璃语音命令从给定列表中最接近的匹配前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用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) {

        }
    }

}

猜你在找的Android相关文章