在 Notifcation 中接收语音输入
如果手持式设备上的Notification包含了一个输入文本的action,比如回复邮件,那么这个action正常情况下应该会调起一个activity让用户进行输入。但是,当这个action出现在可穿戴式设备上时,是没有键盘可以让用户进行输入的,所以开发者应该让用户指定一个反馈或者通过RemoteInput预先设定好文本信息。
当用户通过语音或者选择可见的消息进行回复时,系统会将文本的反馈信息与开发者指定的Notification中的action中的进行绑定,并且将该intent发送给手持设备中的app。
为了创建一个支持语音输入的action,需要创建一个RemoteInput.Builder的实例,将其加到Notification的action中。这个类的构造函数接受一个String类型的参数,系统用这个参数作为语音输入的key,后面我们会用这个key来取得在手持设备中输入的文本。
除了要打开语音输入支持之外,开发者还可以提供多达5条的文本反馈,这样用户可以直接选择实现快速回复。该功能可通过调用)并传递一个String数组实现。
举个例子,可以用resource数组的方式定义这些反馈:
然后,填充 String 数组,并将其添加到RemoteInput中:
当程序发出这个Notification的时候,用户在可穿戴设备上左滑便可以看到reply的按钮。
通过调用)方法,将返回值放在”Reply”的action指定的intent中,开发者便可以在回复的action的intent中指定的activity里,接收到用户转录后的消息。该方法返回的是包含了文本反馈的Bundle。我们可以通过查询中的内容来获得这条反馈。
下面的代码展示了一个接收intent,并且返回语音反馈信息的方法,该方法是依据之前例子中的EXTRA_VOICE_REPLY
作为key进行检索: