如何在WearOS模拟器中配置并测试旋转表框(bezel)功能
无需实体手表测试WearOS旋转表框功能的方案
- 使用官方WearOS 3+模拟器自带的旋转输入模拟功能
创建AVD时选择API 30及以上的Wear OS 3.0+系统镜像,启动模拟器后点击右侧控制栏的更多选项(三点图标),找到「旋转输入」面板,拖动滑块或者滚动鼠标滚轮即可模拟旋转表框操作,系统会自动生成旋转编码器对应的输入事件,无需额外寻找第三方模拟器皮肤。 - 临时添加调试触发逻辑
可在代码中新增侧边音量键监听逻辑,用音量加减模拟表框的正反旋转,测试核心切换逻辑是否正常,测试完成后移除调试代码即可。
现有代码的修复建议
你提供的代码未触发自定义切换函数,大概率是未给目标View申请焦点导致:旋转编码器事件只会分发到当前持有焦点的View,需要提前添加如下配置:
view.isFocusable = true view.isFocusableInTouchMode = true view.requestFocus()
同时你用到的InputDeviceCompat、MotionEventCompat相关API已经废弃,可直接调用系统原生方法简化代码:
view.setOnGenericMotionListener { v, ev -> if (ev.action == MotionEvent.ACTION_SCROLL && ev.isFromSource(InputDevice.SOURCE_ROTARY_ENCODER) ) { val delta = -ev.getAxisValue(MotionEvent.AXIS_SCROLL) * ViewConfiguration.get(this).scaledVerticalScrollFactor if (Math.abs(delta) > 2f) { val np = if (delta > 0) Util.nextAccount(mAccount) else Util.prevAccount(mAccount) Util.d(TAG, mAccount + np.toString()) switchAccount(np) } true } else { false } }
内容的提问来源于stack exchange,提问作者Oleg Gryb
相关产品推荐
相关产品推荐

