交互逻辑阐述

Teamhelper Community2024-03-19 09:00:00

Glass Application SDK 中的统一交互逻辑已经封装在UI组件内部,由SDK封装的UI组件隐式对外提供。在现有的XR眼镜中,操作交互有物理操作和语音指令两种,而物理操作主要又有触摸板、旋钮和按键三种操作方式,意味着用户可以进行语音指令单指点击、单指长按、后退、前滑、后滑等人机交互。为了兼容各类物理操作事件,在安卓开发中,我们往往通过以下两个函数来自定义用户的操作行为。

/**
 * 旋钮、按键
 */
override fun onKeyUp(keyCode: Int, event: KeyEvent): Boolean
/**
 * 触摸板
 */
override fun dispatchTouchEvent(event: MotionEvent): Boolean

但是因为XR设备形态不一,通过各类旋钮、触摸板、按键产生的操作交互所触发的事件各有差异,参见下表。

设备型号单击后退前滑后滑前滑移动后滑移动按键长按单指长按双指点按双指长按
RokidGlass2KEYCODE_DPAD_CENTERKEYCODE_BACKFORWARD_OR_BACKWARDKEYCODE_DPAD_UPKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFT任何按键///
RokidRGCrownKEYCODE_DPAD_CENTERKEYCODE_BACKKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFT任何按键///
Argooz(希姆通)500KEYCODE_BACKKEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWNKEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWN任何按键///
Vuzix(虹科)KEYCODE_DPAD_CENTERKEYCODE_BACKKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFTKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFT任何按键///
Alps(拜特尔)KEYCODE_ENTERKEYCODE_BACKKEYCODE_DPAD_RIGHT || KEYCODE_PAGE_DOWNKEYCODE_DPAD_LEFT || KEYCODE_PAGE_UPKEYCODE_DPAD_RIGHT || KEYCODE_PAGE_DOWNKEYCODE_DPAD_LEFT || KEYCODE_PAGE_UP任何按键///
Epson(爱普生)KEYCODE_BACK任何按键///
Chinvis(谦视)KEYCODE_DPAD_CENTERKEYCODE_BACKKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFT//任何按键///
Nibiru(谷东科技)KEYCODE_ENTERKEYCODE_BACKKEYCODE_DPAD_RIGHTKEYCODE_DPAD_LEFT//任何按键///
Qti(蜂巢)onSingleFingerTaponSingleFingerPressAndDownSliponSingleFingerLongPressAndLeftMoveonSingleFingerLongPressAndRightMoveMotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVEMotionEvent.ACTION_DOWN,MotionEvent.ACTION_MOVEonSingleFingerLongPressonDoubleFingerTap

*表:onKeyUp和dispatchTouchEvent解析出来的KeyCode

因此,我们在Glass Application SDK中对不同设备的交互事件做兼容和封装,并在Glass Application SDK 中,定义了操作逻辑串的概念,所有可被用户进行以上操作交互的View都拥有一个有序的唯一标识sign。除此之外,我们定义一个用户操作焦点的概念focusActivity中所有所有可被操作交互的View都可被通过View.focus()聚焦为当前的操作焦点。

Last Updated 4/15/2024, 10:24:57 AM