如何在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' }
使用说明
- 将上述文件对应放入Wear OS项目的对应路径
- 同步Gradle配置后,可在Wear模拟器或实体设备上运行
- 执行手腕抬起、放下、左右挥动等动作,界面会实时显示对应的手势检测结果
内容的提问来源于stack exchange,提问作者MikeR
相关产品推荐
相关产品推荐

