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

如何在Wear OS应用中捕获手腕手势?求完整Java示例项目代码

完整Wear OS手腕手势处理Java应用示例

以下是一个可直接运行的Wear OS手腕手势处理Java应用,包含核心逻辑、布局及清单文件:

项目结构概览

  • app/src/main/AndroidManifest.xml:清单配置
  • app/src/main/res/layout/activity_main.xml:界面布局
  • app/src/main/java/com/example/wristgesture/MainActivity.java:手势处理逻辑
  • app/build.gradle:依赖配置(需添加Wear相关依赖)

1. 清单文件(AndroidManifest.xml)

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.wristgesture">

    <!-- 手腕手势所需基础权限 -->
    <uses-permission android:name="android.permission.BODY_SENSORS" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.WristGesture">

        <!-- 声明应用为Wear独立应用 -->
        <meta-data
            android:name="com.google.android.wearable.standalone"
            android:value="true" />

        <!-- 启用手腕手势支持 -->
        <meta-data
            android:name="android.support.wearable.wrist_gesture_enabled"
            android:value="true" />

        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

2. 界面布局(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/gesture_status"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="等待手势..."
        android:textSize="18sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

3. 核心逻辑(MainActivity.java)

package com.example.wristgesture;

import androidx.appcompat.app.AppCompatActivity;
import androidx.wear.widget.WearableGestureDetector;

import android.os.Bundle;
import android.view.MotionEvent;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity implements WearableGestureDetector.OnWristGestureListener {

    private TextView gestureStatus;
    private WearableGestureDetector gestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        gestureStatus = findViewById(R.id.gesture_status);
        // 初始化手势检测器
        gestureDetector = new WearableGestureDetector(this, this);
    }

    // 将触摸事件传递给手势检测器
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return gestureDetector.onTouchEvent(event) || super.onTouchEvent(event);
    }

    // 手腕抬起手势回调
    @Override
    public void onWristUp() {
        updateGestureStatus("检测到手腕抬起");
    }

    // 手腕放下手势回调
    @Override
    public void onWristDown() {
        updateGestureStatus("检测到手腕放下");
    }

    // 手腕快速挥动(左/右)回调
    @Override
    public void onWristFling(WearableGestureDetector.FlingDirection direction) {
        String directionStr = switch (direction) {
            case LEFT -> "向左";
            case RIGHT -> "向右";
            default -> "未知";
        };
        updateGestureStatus("检测到手腕挥动:" + directionStr);
    }

    // 更新界面显示的手势状态
    private void updateGestureStatus(String status) {
        gestureStatus.setText(status);
    }
}

4. 依赖配置(Module级build.gradle)

确保在dependencies块中添加Wear OS核心依赖:

dependencies {
    implementation 'androidx.wear:wear:1.3.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
}

使用说明

  1. 将上述文件对应放入Wear OS项目的对应路径
  2. 同步Gradle配置后,可在Wear模拟器或实体设备上运行
  3. 执行手腕抬起、放下、左右挥动等动作,界面会实时显示对应的手势检测结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:07:46