You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WearOS上实现表冠/主页按钮点击事件切换表盘与应用列表?

实现WearOS启动器表盘与应用列表的切换功能

一、拦截主页按钮与表冠点击事件

由于你的应用已经覆盖系统启动器,可直接在启动器主Activity中重写按键事件处理方法,拦截主页按钮和表冠点击的触发信号:

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
    return when (keyCode) {
        // 主页按钮
        KeyEvent.KEYCODE_HOME,
        // 表冠点击事件(部分设备可能用KEYCODE_STEM_1,需根据设备适配)
        KeyEvent.KEYCODE_STEM_PRIMARY -> {
            toggleInterface()
            true // 消费事件,阻止系统默认行为
        }
        else -> super.onKeyDown(keyCode, event)
    }
}

Java版本实现:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HOME || keyCode == KeyEvent.KEYCODE_STEM_PRIMARY) {
        toggleInterface();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

二、实现核心切换逻辑

toggleInterface()方法需要判断当前显示状态,完成应用列表与表盘的双向切换:

1. 从应用列表切换到表盘

通过隐式Intent启动系统表盘(无需硬编码包名,适配不同WearOS设备):

private fun toggleInterface() {
    if (isAppListVisible()) {
        // 切换至系统表盘
        val dialerIntent = Intent(Intent.ACTION_MAIN).apply {
            addCategory(Intent.CATEGORY_HOME)
            flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
        }
        startActivity(dialerIntent)
    } else {
        // 切换回应用列表(显示你的启动器界面)
        showAppList()
    }
}

2. 从表盘切换回应用列表

如果启动器主Activity设置为单任务模式(推荐配置),启动自身即可回到应用列表:

private fun showAppList() {
    val launcherIntent = packageManager.getLaunchIntentForPackage(packageName)?.apply {
        flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TOP
    }
    launcherIntent?.let { startActivity(it) }
}

若应用列表和表盘预览在同一个Activity的不同Fragment/View中,直接切换视图或Fragment即可,无需启动新Activity。

三、关键配置与注意事项

  • 默认启动器配置:确保Manifest中已正确声明启动器Activity的intent-filter,保证系统优先调用你的应用:
<activity
    android:name=".MainLauncherActivity"
    android:launchMode="singleTask">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>
  • 设备适配:部分WearOS设备的表冠点击KeyCode可能为KEYCODE_STEM_1或KEYCODE_STEM_2,可通过日志打印keyCode值确认适配。
  • 动画优化:添加切换动画提升体验,比如在启动Activity时调用overridePendingTransition(R.anim.fade_in, R.anim.fade_out)。

内容的提问来源于stack exchange,提问作者Thomas Basile

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 23:45:35