如何为 WearOS 模拟器添加边框

How to add bezel to WearOS simulator

三星开始在其最新的智能手表中使用 Wea​​rOS,例如在 Galaxy 4 手表中,我需要测试边框功能,因为后一种型号确实有。但是我没有在 AVD 中找到任何支持边框的 WearOS 设备。

我也试过创建一个新的 h/w 配置文件,但也没有找到边框选项。他们拥有的所有导航选项都在下面。 None 其中与挡板有关。

我也曾尝试为 Galaxy 4 寻找皮肤,但到目前为止还没有成功。根据 Galaxy4 所有者的说法,以下代码不起作用。您当然可以建议如何修复代码,但我仍然想知道如何在不买手表的情况下进行测试

    view.setOnGenericMotionListener { v, ev ->
        if (ev.action == MotionEvent.ACTION_SCROLL &&
                ev.isFromSource(InputDeviceCompat.SOURCE_ROTARY_ENCODER)
        ) {
            
            val delta = -ev.getAxisValue(MotionEventCompat.AXIS_SCROLL) *
                    ViewConfigurationCompat.getScaledVerticalScrollFactor(
                            ViewConfiguration.get(this), this
                    )

            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
        }
    }

nextAccount和prevAccount是一些切换视图的自定义函数。 None个是根据用户调用的

这里是一个 Tizen Studio 模拟器,它的边框可以通过拖动白点来旋转:

我终于解决了这个问题。在应该处理旋转事件的视图布局中,我添加了 requestFocus 标记:

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fillViewport="true"
    android:scrollbars="vertical"
    android:fadeScrollbars="false"
    android:id="@+id/token_scroll"
    >
    <requestFocus />
    ...

为了测试边框,我使用了模拟器右侧的菜单,如下图所示。 Bezel 事件至少在模拟器中得到了正确处理。当听到用户的消息时,我会告诉你它是否适用于真正的 Galaxy 4 智能手表。

更新 一位 Galaxy 4 智能手表用户刚刚确认修复后边框可以正常工作。它确认修复和测试方法都是正确的并且达到了他们的目标。