首页 > 代码库 > Android:创建可穿戴应用 - 语音操作

Android:创建可穿戴应用 - 语音操作

添加语音处理能力(Adding Voice Capabilities)

语音操作是可穿戴用户体验的重要部分,可以让用户以快捷、免提的方式执行动作。

Wear提供两种类型的语音操作:


系统提供(System-provided)
这些语音操作是基于任务的,且内置于Wear平台。
语音命令到达时,在你想启动的活动(Activity)中进行动作过滤。
比如“记一下”(Take a note)或“提醒一下”(Set an alarm)。
应用提供(App-provided)
这些语音操作是基于APP的,声明方式和启动图标一样。用户说“开始”(Start)来使用这些语音操作以及一个你指定的活动。
声明系统提供的语音操作
Android Wear平台提供了一些基于用户动作的语音意图(voice intents),比如上述“记一下”或“提醒一下”。
这让用户只需要说出自己想要做的操作,而由系统来确定该启动哪个活动来响应。
当用户发出语音指令时,你的应用程序可以对此意图进行侦听和过滤,这样合适的应用将被该语音意图(intent)所启动。
如果你想启动一个后台服务,以可见提示的方式显示一个活动,然后在活动启动服务。
当你想摆脱这个可见提示时,确保调用finish()函数。
比如,对于"Take a note"命令,声明如下的意图过滤器(intent filter)来启动一个名叫MyNoteActivity的活动:
  <activity android:name="MyNoteActivity">
      <intent-filter>
          <action android:name="android.intent.action.SEND" />
          <category android:name="com.google.android.voicesearch.SELF_NOTE" />
      </intent-filter>
  </activity>
下面是Wear平台所支持的语音意图(voice intents)列表:

android wear voice actions 1

android wear voice actions 2

声明应用提供的语音操作
如果上述系统语音意图都不能满足你的要求,你可以用“Start MyActivityName”的语音指令来直接启动你的应用。
注册一个“Start”操作和在手机应用上注册一个启动图标类似。
想指定“Start”命令后面的文本参数,需要给相应活动指定一个label属性。
比如,下面这个意图过滤器将识别"Start MyRunningApp"语音操作并启动StartRunActivity。
<application>
  <activity android:name="StartRunActivity" android:label="MyRunningApp">
      <intent-filter>
          <action android:name="android.intent.action.MAIN" />
          <category android:name="android.intent.category.LAUNCHER" />
      </intent-filter>
  </activity>
</application>
获取Free-form语音输入
为了能使用语音操作来启动活动,你还可以调用系统内置的语音识别活动(Speech Recognizer activity)来获取用户的语音输入。
这对于语音识别和后续处理是有帮助的,比如执行一个搜索或者发送语音消息。
在应用中,你可以使用ACTION_RECOGNIZE_SPEECH动作来调用startActivityForResult()函数, 

这将启动该活动并可以在onActivityResult()中处理语音识别结果。


by iefreer