多模输入事件标准化开发指导
场景介绍
多模输入结合UI框架实现了交互事件映射框架,可将多种输入设备的原始事件自动映射为标准化事件;进一步将标准化事件映射成统一的UI交互功能,实现统一的用户交互体验。
接口说明
多模输入事件标准化提供了标准化基类(StandardizedEventHandle),以及其派生的通用类标准化事件(CommonEventHandle)、媒体类标准化事件(MediaEventHandle)、系统类标准化事件(SystemEventHandle)、通话类标准化事件(TelephoneEventHandle)等,另外提供处理标准化事件的类(MultimodalEventHandle),包括注册和去注册标准化事件。
图1 多模输入事件标准化类
StandardizedEventHandle是所有事件的基类。
CommonEventHandle处理标准公共事件。
| 功能分类 | 接口名 | 描述 | | ---------------------------------------------------- | --------------------------------------------------- | ---------------- | | 事件回调 | boolean onShowMenu(MultimodalEvent multimodalEvent) | 显示菜单时调用。 | | boolean onSend(MultimodalEvent multimodalEvent) | 发送事件发生时调用。 | | | boolean onCopy(MultimodalEvent multimodalEvent) | 发生复制事件时调用。 | | | boolean onPaste(MultimodalEvent multimodalEvent) | 发生粘贴事件时调用。 | | | boolean onCut(MultimodalEvent multimodalEvent) | 发生剪切事件时调用。 | | | boolean onUndo(MultimodalEvent multimodalEvent) | 发生撤销事件时调用。 | | | boolean onRefresh(MultimodalEvent multimodalEvent) | 发生刷新事件时调用。 | | | boolean onStartDrag(MultimodalEvent multimodalEvent) | 启动拖动时调用。 | | | boolean onCancel(MultimodalEvent multimodalEvent) | 发生取消事件时调用。 | | | boolean onEnter(MultimodalEvent multimodalEvent) | 发生确认事件时调用。 | | | boolean onPrevious(MultimodalEvent multimodalEvent) | 发生转到上一个元素的事件时调用。 | | | boolean onNext(MultimodalEvent multimodalEvent) | 发生转到下一个元素的事件时调用。 | | | boolean onBack(MultimodalEvent multimodalEvent) | 返回事件发生时调用。 | | | boolean onPrint(MultimodalEvent multimodalEvent) | 发生打印事件时调用。 | |
KeyEventHandle处理标准按键事件。
| 功能分类 | 接口名 | 描述 | | -------- | ----------------------------- | -------------------- | | 事件回调 | boolean onKey(KeyEvent event) | 按键事件发生时调用。 |
MediaEventHandle处理标准媒体事件。
| 功能分类 | 接口名 | 描述 | | ------------------------------------------------------- | ----------------------------------------------- | ---------------- | | 事件回调 | boolean onPlay(MultimodalEvent multimodalEvent) | 播放媒体时调用。 | | boolean onPause(MultimodalEvent multimodalEvent) | 暂停播放时调用。 | | | boolean onMediaControl(MultimodalEvent multimodalEvent) | 在媒体控制事件发生时调用,可以播放或暂停。 | |
SystemEventHandle处理标准系统事件。
| 功能分类 | 接口名 | 描述 | | ----------------------------------------------- | ---------------------------------------------------- | ------------------ | | 事件回调 | boolean onClosePage(MultimodalEvent multimodalEvent) | 当页面关闭时调用。 | | boolean onMute(MultimodalEvent multimodalEvent) | 音量静音时调用。 | |
TelephoneEventHandle处理标准呼叫事件。
| 功能分类 | 接口名 | 描述 | | ----------------------------------------------------------- | ------------------------------------------------- | ---------------- | | 事件回调 | boolean onAnswer(MultimodalEvent multimodalEvent) | 应答呼叫时调用。 | | boolean onRefuse(MultimodalEvent multimodalEvent) | 呼叫被拒绝时调用。 | | | boolean onHangup(MultimodalEvent multimodalEvent) | 挂断呼叫时调用。 | | | boolean onTelephoneControl(MultimodalEvent multimodalEvent) | 呼叫控制事件发生时调用。 | |
TouchEventHandle处理标准触摸事件。
| 功能分类 | 接口名 | 描述 | | -------- | --------------------------------- | -------------------- | | 事件回调 | boolean onTouch(TouchEvent event) | 触摸事件发生时调用。 |
MultimodalEventHandle处理标准事件的注册和去注册。
| 功能分类 | 接口名 | 描述 | | ---------- | ------------------------------------------------------------ | ------------------ | | 事件注册 | static int registerStandardizedEventHandle(Ability ability,StandardizedEventHandle standardizedEventHandle) | 注册标准化事件。 | | 事件去注册 | static int unregisterStandardizedEventHandle(Ability ability,StandardizedEventHandle standardizedEventHandle) | 去注册标准化事件。 |
开发步骤
重写TouchEventHandle接口类中的boolean onTouch(TouchEvent event)方法,作为处理标准触摸事件的回调。
调用MultimodalEventHandle的静态方法registerStandardizedEventHandle注册事件。
TouchEventHandle touchEventHandle = new TouchEventHandle() { @Override public boolean onTouch(TouchEvent multimodalEvent) { ... // 检测到onTouch,开发者根据需求实现 return true; // 如果事件已处理,则返回true;否则返回false }};MultimodalEventHandle.registerStandardizedEventHandle(getAbility(), touchEventHandle);
当程序退出或不需要监听标准化事件时,调用MultimodalEventHandle的静态方法unregisterStandardizedEventHandle去注册事件。
MultimodalEventHandle.unregisterStandardizedEventHandle(getAbility(), touchEventHandle);