AndroidWear官方文档总结06 - 支持语音输入的通知

来源:互联网 发布:淘宝店铺活动玩法 编辑:程序博客网 时间:2024/06/05 07:53

假如手持设备的通知上包含文字输入的功能,例如回复邮件,正常情况下手持设备上会启动一个Activity来输入文字。然而,当通知显示在穿戴设备上时,没有键盘输入,你可以使用RemoteInput让用户口述回复,或者使用提供预定义的文本消息回复。当用户以声音,或者预定义的文本信息作为回答,系统会将答复添加进通知的Intent中,然后在手持设备上打开Intent对应的组件

 

创建支持语音输入的RemoteInput.Builder对象添加到通知中,这个类的构造器需要传递一个字符串作为作为语音输入的key,稍后用于检出输入的文字。除允许声音输入外,可以提供5个预定义的文本消息,让用户选择以快速回复。

 

代码如下:

private static final String EXTRA_VOICE_REPLY =         "extra_voice_reply";String[] choices = {"吃过了", "还没吃", "你请我啊", "我要吃麻辣烫"};//EXTRA_VOICE_REPLY 为检出语音输入文本的KeyRemoteInput input = new RemoteInput.Builder(EXTRA_VOICE_REPLY)      .setLabel("吃饭了么?")  //设置 提问      .setChoices(choices)   //设置 预定义文本作为快速回复      .build();

设置语音输入,可以使用addRemoteInput()方法添加RemoteInput对象到Action,让通知支持语音回复。

代码如下:

//创建Intent,用于接收回复Intent actionIntent = new Intent();i.setClass(this, ReplayActivity.class);PendingIntent actionPendingIntent =     PendingIntent.getActivity(MainActivity.this, 0, i,     PendingIntent.FLAG_UPDATE_CURRENT);//创建ActionNotificationCompat.Action actionRemoteInput = new     NotificationCompat.Action.Builder(R.drawable.background,       "语音回复", actionPendingIntent)    .addRemoteInput(input).build();//添加Action到通知builder.extend(new NotificationCompat.WearableExtender()   .setBackground(BitmapFactory.decodeResource(getResources()       , R.drawable.background))   .addAction(actionRemoteInput));

在回复意图所对应的Activity中接收用户回复,调用getResultsFromIntent()方法,把含有回复内容的Intent传过去,这个方法的返回值是包含回复信息的Bundle对象,根据之前设置的语音输入文本的Key就可以取出所对应的文本内容。

代码如下:

private CharSequence getMessageText(Intent intent) {    Bundle remoteInput =             RemoteInput.getResultsFromIntent(intent);    if (remoteInput != null) {         return remoteInput.getCharSequence(EXTRA_VOICE_REPLY);    }    return null;}

运行效果如下图所示,最开始语音回复,说完语音后,系统会自动语音识别成字符串。或者也可可以选择预先定义好的文本,作为答复。当答复后,系统会显示“Sending”界面,让用户有时间来取消之前的选择。如果“Sending”界面进度完成后,系统会打开Action所对应的Intent,从该ActivityIntent中取出答复的文本。

语音输入的通知

 

注意:模拟器不支持语音输入,只能键盘输入。所以这个案例的语音功能只能在真机上测试。





0 0
原创粉丝点击