Android Wear 在可穿戴设备中使用语音进行交互

在通知中接收语音输入

如果你手机中创建了一个包括某个行为的通知,如需要回复邮件之类的操作,通常会出现一个activity让用户进行输入,但是再可穿戴设备中,没有任何键盘让用户使用,因此用户进行交互时使用的输入方式可以使用RemoteInput。

当用户使用语音回复或者可支持的其他输入方式是,系统会将文本的答复绑定在你指定的通知行为的Intent中,然后将该Intent传入手机的app。

定义语音输入

为了创建一个可以接受语音输入的行为,需要实例化RemoteInput.Builder并添加到通知的action中。它的构造方法接收一个字符串,这个字符串是系统使用语音输入的key,这样之后,就可以使用语音输入与app进行关联了。

例如,下面的代码就是创建一个RemoteInput对象,并提供语音输入功能的方法。

// Key for the string that's deliveredin the action's intent
private staticfinalString EXTRA_VOICE_REPLY="extra_voice_reply";

String replyLabel = getResources().getString(R.string.reply_label);

RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY)
        .setLabel(replyLabel)
        .build();

提供预定义的文本回复

除了支持语音输入,你也能提供最多5个让用户快速恢复的文本,调用setChoices()传递给一个字符型数组,如下是定义的一个回复的资源数组

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="reply_choices">
        <item>Yes</item>
        <item>No</item>
        <item>Maybe</item>
    </string-array>
</resources>

然后获取该数组,并添加到RemoteInput中

public static final EXTRA_VOICE_REPLY = "extra_voice_reply";
...
String replyLabel = getResources().getString(R.string.reply_label);
String[] replyChoices = getResources().getStringArray(R.array.reply_choices);

RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY)
        .setLabel(replyLabel)
        .setChoices(replyChoices)
        .build();

将语音输入作为通知行为

使用addRemoteInput()将RemoteInput对象绑定到一个action中,这样你就能使用这个通知行为了,如下代码所示:

// Create an intent for the reply action
Intent replyIntent = new Intent(this, ReplyActivity.class);
PendingIntent replyPendingIntent =
        PendingIntent.getActivity(this, 0, replyIntent,
                PendingIntent.FLAG_UPDATE_CURRENT);

// Create the reply action and add the remote input
NotificationCompat.Action action =
        new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon,
                getString(R.string.label, replyPendingIntent))
                .addRemoteInput(remoteInput)
                .build();

// Build the notification and add the action via WearableExtender
Notification notification =
        new NotificationCompat.Builder(mContext)
                .setSmallIcon(R.drawable.ic_message)
                .setContentTitle(getString(R.string.title))
                .setContentText(getString(R.string.content))
                .extend(new WearableExtender().addAction(action))
                .build();

// Issue the notification
NotificationManagerCompat notificationManager =
        NotificationManagerCompat.from(mContext);
notificationManager.notify(notificationId, notification);

当通知弹出的时候,用户向左滑动屏幕,就可以看到reply的行为按钮。

接收语音输入作为字符串

接收用户说出的语音指令,可以调用getResultsFromIntent(),传递给Reply行为,这个方法返回一个Bundle,包含了文本的回复,然后可以查询携带回复的Bundle。这里不能用Intent.getExtras()

下面的代码展示了接收Intent与返回语音应答的方法,在上面的代码中可以使用。

/**
 * Obtain the intent that started this activity by calling
 * Activity.getIntent() and pass it into this method to
 * get the associated voice input string.
 */

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

Android Wear 在可穿戴设备中使用语音进行交互

时间: 2024-11-12 07:11:38

Android Wear 在可穿戴设备中使用语音进行交互的相关文章

可穿戴设备,也许无屏交互才是终极需求!

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 是的,对于残障人士,可能很有用,但对于我们这些懒得不能再懒的现代人来说,也许有一天,再快的操作界面更新都满足不了了,不是因为不够新奇,而是人们对于

4G模块在可穿戴设备中的应用有哪些前景

随着可再生能源以及能源数字化.分散化和消费化的出现,有人物联网云为电力与公用事业公司提供了一些工具,帮助他们应对新的业务模式.更可靠地交付能源,并实施更智能.更具分散性的网格结构.有人物联网为电力与公用事业公司奠定了坚实的通讯基础,帮助他们侧重于交付最佳客户体验.在安全可靠地满足需求的同时实现运营和经济高效性.灵活发展其业务模式.在瞬息万变的行业中进行革新,并以其关键业务洞察力来实现行业变革. 了解电力和公用事业客户选择在有人物联网上进行创新的原因   优势 运营效率和卓越运营 有人物联网提供弹

[Android Wear]安卓穿戴设备Moto 360测评与开发分析

前言: 昨天刚买到了Moto 360,这是楼主目前为止见到的最好的安卓可穿戴设备,一个圆形的手表: BesBuy和官网都卖光了..这是楼主听说补货了去bestbuy买到的. 外形上这就是一块普通的电子表,但其实包含的功能确实不少.最令人心动的就是它圆形的表盘,这比市面上方形的安卓手表更具有吸引力. 唯一的遗憾就是..不是完整的圆形(处女座的..) 这个其实是可以理解的:做成完整的圆形也是可以的,但是那样必然会加大或者加厚表盘--因为需要空间去放IC和一些排线,而美观和实用程度会大大降低.不然的话

Android Wear 开发入门——如何创建一个手机与可穿戴设备关联的通知(Notification)

创建通知 为了创建在手机与可穿戴设备中都能展现的通知,可以使用 NotificationCompat.Builder.通过该类创建的通知,系统会处理该通知是否展现在手机或者穿戴设备中. 导入必要的类库 在开发之前首先需要导入以下类库 importandroid.support.v4.app.NotificationCompat; importandroid.support.v4.app.NotificationManagerCompat; importandroid.support.v4.app

Android Wear - App Structure for Android Wear(应用结构)

原文地址:http://developer.android.com/design/wear/structure.html 用户习惯于点击图标来启动应用程序,但是Android Wear不一样.一个典型的Wear应用程序会在一个情境的合适时刻插入一张卡片到信息流中.这张卡片可能会包含一个用于快速交互的按钮来打开一个全屏视图(在一些情况下,卡片也可能不会提供交互按钮): 以下是简单排序的构建模块.你可以使用其中的一个或者多个模块,但是我们强烈推荐不要构建这样的应用:用户在启动或者退出应用之前必须仔细

Android Wear和二维码

这是一篇发布在Android官方开发者社区博客,15年年初的时候就看到了这篇文章,直到现在才有时间把它翻译下来. 这是一篇如何在Android Wear上面如何正确地展示二维码的文章,里面有许多的经验和教训可以记取,原文地址请点击这里. 原文翻译内容如下 : Android Wear和二维码:使用用户通过快速轨道的方法 争匆匆上火车.进音乐会或者简单地订个咖啡,我们都看到过用户或者我们自己翻找钱包或者移动应用来努力找到正确地登机通道.票据或者会员卡.有了Android Wear和移动应用上的几行

Android Wear计时器开发

记得在2013年12月的时候,有系列文章是介绍怎么开发一个智能手表的App,让用户可以在足球比赛中记录停表时间.随着Android Wear的问世,在可穿戴设备中开发一款这样的App确实是个很不错的想法,但是按照目前对于Android Wear的架构了解来说,似乎有些困难.所以本系列文章我们就重写这个应用,带领大家进入Android Wear的世界. 本文不会长篇大论地讲解我们要开发的这款App的用途,因为我们在之前的系列文章已经深入了解过了.这么说吧,这是一个计时类应用,在比赛开始的时候开始执

通过蓝牙调试(穿戴设备app) - 开发文档翻译

由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明"转",那么均为原创,转贴请注明本博客链接链接 Debugging over Bluetooth 通过蓝牙调试 You can debug your wearable over Bluetooth by routing its debug output to the handheld device that's connected to your development machine. 你可以通过蓝牙debug你的穿戴设备

打包穿戴设备app - 开发文档翻译

由于本人英文能力实在有限,不足之初敬请谅解 本博客只要没有注明"转",那么均为原创,转贴请注明本博客链接链接 Packaging Wearable Apps 打包穿戴设备app When publishing to users, you must package a wearable app inside of a handheld app, because users cannot browse and install apps directly on the wearable. I