谷歌眼镜GDK开发指南之语音输入

原文链接:http://bbs.seacat.cn/thread-901-1-1.html


Glass可以让你声明语音命令,从ok glass 语音菜单中启动你的Glassware。


        




你也可以调用语音识别的activity







已存在语音命令


当你在开发的时候,你可以使用任何你想要的语音指令。当你想要启动Glassware并出现在MyGlass中,你必须得使用已存在的命令或提交新命令审核。



  • listen to
  • take a note
  • post an update
  • show a compass
  • start a run
  • start a bike ride
  • find a recipe
  • record a recipe
  • check me in
  • start a stopwatch
  • start a timer
  • start a round of golf
  • translate this
  • learn a song
  • tune an instrument
  • play a game
  • start a workout
注意:需要准确的声明这些语音命令(包括间隔符)到<trigger>元素中。







启动Glassware


添加一个trigger到ok glass语音主菜单:


1、为你的voice trigger声明一个string变量的名称到res/values/strings.xml。可选择性的声明一个语音提示,在启动Glassware前显示在语音识别activity中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="glass_voice_trigger">take a note</string>
    <string name="glass_voice_prompt">tell me what's on your mind</string>
</resources>

2、为 voice trigger创建一个xml资源到 res/xml/<my_voice_trigger>.xml 
一个简单的voice trigger直接启动一个activity或一个service


<?xml version="1.0" encoding="utf-8"?>
<trigger keyword="@string/glass_voice_trigger" />

3、注册一个action为 com.google.android.glass.action.VOICE_TRIGGER 的intent filter在manifest中。当检测到用户说出你的voice trigger时会启动这activity或service。


<?xml version="1.0" encoding="utf-8"?>
<application ...>
    <activity | service ...>
        <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/my_voice_trigger" />
    </activity | service>
    // ...
</application>


4、为activity或service设置一个android:icon属性,用来显示在ok,glass菜单中。


注意:图标必须是白色且背景透明,50*50像素。


<activity |service
  android:icon="@drawable/my_icon" ...>
  ...
</activity | service>


5、当启动了一个activity,可以通过下面的代码得到转义的文字


ArrayList<String> voiceResults = getIntent().getExtras()
        .getStringArrayList(RecognizerIntent.EXTRA_RESULTS);


当启动了一个服务,可以在 onStartCommand() 的回调中得到intent extra:


@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    ArrayList<String> voiceResults = intent.getExtras()
            .getStringArrayList(RecognizerIntent.EXTRA_RESULTS);
    // ...
}


设置约束


如果你需要使用相机、网络、麦克风这些功能,就需要在res/xml/<my_voice_trigger>.xml中指定他们。如果功能无效,Glass就会禁用这个 voice trigger:


<trigger keyword="@string/glass_voice_trigger">
    <constraints
        camera="true"
        network="true" />
</trigger>


启动语音识别activity




语音识别activity会等待用户说话,并在说完后返回转义的文本。启动这个activity:


1、通过 ACTION_RECOGNIZE_SPEECH intent来调用startActivityForResult()方法。支持以下intent extras :

EXTRA_PROMPT
EXTRA_RESULTS_PENDINGINTENT
EXTRA_RESULTS_PENDINGINTENT_BUNDLE




2、重写 onActivityResult() 回调方法,从 EXTRA_RESULTS intent extra中接收转义文本,当用户停止说话的时候,这个回调会被调用。


private static final int SPEECH_REQUEST = 0;
 
private void displaySpeechRecognizer() {
    Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    startActivityForResult(intent, SPEECH_REQUEST);
}
 
@Override
protected void onActivityResult(int requestCode, int resultCode,
        Intent data) {
    if (requestCode == SPEECH_REQUEST && resultCode == RESULT_OK) {
        List<String> results = data.getStringArrayListExtra(
                RecognizerIntent.EXTRA_RESULTS);
        String spokenText = results.get(0);
        // Do something with spokenText.
    }
    super.onActivityResult(requestCode, resultCode, data);
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值