本文描述了唤醒相关的接口和配置。对于唤醒概念不了解,可参阅 术语解释 里的 唤醒管理

设置单个页面快捷词

对于快捷词不理解的,可参考 术语解释。具体应用场景,比如:视频播放中,用户希望通过说 "暂停播放" 或 "继续播放" 来控制播放。

// 所有可用的唤醒词索引
public static final int WAKEUP_WORD_TYPE_LOCAL = 3; // 本地唤醒词

// =================以下重点注意:index排序和底层保持一致,不能改变==================
public static final int WAKEUP_WORD_NAME_INVALID = 0; // 全部取消
public static final int WAKEUP_WORD_NAME_TIANMAOJINGLING = 1; // 天猫精灵
public static final int WAKEUP_WORD_NAME_NIHAOTIANMAO = 2; // 你好天猫
public static final int WAKEUP_WORD_NAME_JINGLINGTUICHU = 3; // 精灵退出
public static final int WAKEUP_WORD_NAME_JINGLINGZANTING = 4; // 精灵暂停
public static final int WAKEUP_WORD_NAME_SHENGYINDAYIDIAN = 5; // 声音大一点
public static final int WAKEUP_WORD_NAME_SHENGYINXIAOYIDIAN = 6; // 声音小一点
public static final int WAKEUP_WORD_NAME_XIAYISHOU = 7; // 下一首
public static final int WAKEUP_WORD_NAME_WOYAOKAN = 8; // 我要看
public static final int WAKEUP_WORD_NAME_WOYAOTING = 9; // 我要听
public static final int WAKEUP_WORD_NAME_XIAYIGE = 10; // 下一个
public static final int WAKEUP_WORD_NAME_SHANGYIYE = 11; // 上一页
public static final int WAKEUP_WORD_NAME_XIAYIYE = 12; // 下一页
public static final int WAKEUP_WORD_NAME_HUANYIPI = 13; // 换一批
public static final int WAKEUP_WORD_NAME_FANHUI = 14; // 返回
public static final int WAKEUP_WORD_NAME_KANZHENGPIAN = 15; // 看正片
public static final int WAKEUP_WORD_NAME_ZANTING = 16; // 暂停
public static final int WAKEUP_WORD_NAME_BOFANG = 17; // 播放
public static final int WAKEUP_WORD_NAME_QUANPING = 18; // 全屏
public static final int WAKEUP_WORD_NAME_KUAIJIN = 19; // 快进
public static final int WAKEUP_WORD_NAME_KUAITUI = 20; // 快退
public static final int WAKEUP_WORD_NAME_SHANGYIJI = 21; // 上一集
public static final int WAKEUP_WORD_NAME_XIAYIJI = 22; // 下一集
public static final int WAKEUP_WORD_NAME_DAKAI = 23; // 打开
public static final int WAKEUP_WORD_NAME_SHANGYISHOU = 24; // 上一首
public static final int WAKEUP_WORD_NAME_SHANGYIGE = 25; // 上一个
public static final int WAKEUP_WORD_NAME_JINGLINGFANHUI = 26; // 精灵返回
public static final int WAKEUP_WORD_NAME_DAKAIDI = 27; // 打开第
public static final int WAKEUP_WORD_NAME_JIXUBOFANG = 28; //继续播放
public static final int WAKEUP_WORD_NAME_QUANPINBOFANG = 29;  //全屏播放

// 一般在进入一个新页面时设置该页面的唤醒词
public void setWakeupWords() {
    // 设置 暂停 和 继续播放 两个动态唤醒词
    int[] wakeupCodes = new int[2];
    wakeupCodes[0] = WAKEUP_WORD_NAME_ZANTING;
    wakeupCodes[1] = WAKEUP_WORD_NAME_JIXUBOFANG;
    AiLabsCore.getInstance().updatePageWakeupWord(WAKEUP_WORD_TYPE_LOCAL, wakeupCodes);
    
    // 设置无动态唤醒词
    int[] invalid = new int[]{WAKEUP_WORD_NAME_INVALID};
    APPLog.d(TAG, "handleWakeupWords. wakeupCodes = " + Arrays.toString(invalid));
    AiLabsCore.getInstance().updatePageWakeupWord(WAKEUP_WORD_TYPE_LOCAL, invalid);
}

开启禁用唤醒

如果希望开启或者禁用唤醒能力,可以通过下述方法:

/*  1. 这里 mSwitchWakeupButton 为 启用/禁用唤醒 按钮句柄。
 *  2. 调用AguiCtx的 getWakeupForbidden(true|false)获取唤醒是否被禁用。
 *      true -- 唤醒被禁用
 *      false -- 唤醒处于开启状态
 *  3. 调用AguiCtx的 setWakeupForbidden(true|false)设置是否禁用唤醒。
 *      true -- 禁用唤醒
 *      false -- 开启唤醒
 */ 
mSwitchWakeupButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        if (AguiCtx.getInstance().getWakeupForbidden()) {
            AguiCtx.getInstance().setWakeupForbidden(false);
            // 提示操作结果
            mTipsTextView.setText("启用唤醒成功");
        } else {
            AguiCtx.getInstance().setWakeupForbidden(true);
            // 提示操作结果
            mTipsTextView.setText("禁用唤醒成功");
        }
        mSwitchWakeupButton.setText(AguiCtx.getInstance().getWakeupForbidden() ? "启用唤醒":"禁止唤醒");
    }
});

获取唤醒类型

在对话过程中,想要获取当前唤醒类型,可以通过下述方法:

/*  1. 这里 mGetWakeupTypeButton 为 取消多轮会话 按钮句柄。
 *  2. 调用 getWakeupType() 获取会话类型,常用的几个类型
 *      WakeUpType.ACTIVE(0) -- 唤醒词唤醒
 *      WakeUpType.SHORTCUT(4) -- 快捷词唤醒
 *      WakeUpType.PRESS(7) -- 按键唤醒
 *      WakeUpType.TOUCH(8) -- 技能尝试唤醒
 *      WakeUpType.CONTINUE_DIALOG(9) -- 多轮对话
 *      WakeUpType.FACE_RECOGNIZE(10) -- 视觉唤醒
 *      WakeUpType.GESTURE(13) -- 手势唤醒
 */ 
mGetWakeupTypeButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        AiLabsCore.getInstance().getWakeupType();
    }
});