嵌入式系统移植 - Framework : 添加边缘左右手势动作检测

添加边缘左右手势动作检测

说明

Android6.0 系统支持Top, Bottom, Right手势检测, 所以我们根据原生的功能添加Left手势. 并且添加边缘Bar功能吧(仿大厂小米手势动作)

负责检测手势

SDK/frameworks/base/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java

负责处理手势事件

SDK/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

调试图

在这里插入图片描述

修改源码

  • 添加手势检测
diff --git a/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java b/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
old mode 100644
new mode 100755
index e4bd21d..9b1d043
--- a/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
+++ b/services/core/java/com/android/server/policy/SystemGesturesPointerEventListener.java
@@ -32,7 +32,7 @@ import android.widget.OverScroller;
  */
 public class SystemGesturesPointerEventListener implements PointerEventListener {
     private static final String TAG = "SystemGestures";
-    private static final boolean DEBUG = false;
+    private static final boolean DEBUG = true;
     private static final long SWIPE_TIMEOUT_MS = 500;
     private static final int MAX_TRACKED_POINTERS = 32;  // max per input system
     private static final int UNTRACKED_POINTER = -1;
@@ -42,6 +42,7 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
     private static final int SWIPE_FROM_TOP = 1;
     private static final int SWIPE_FROM_BOTTOM = 2;
     private static final int SWIPE_FROM_RIGHT = 3;
+    private static final int SWIPE_FROM_LEFT = 4;

     private final Context mContext;
     private final int mSwipeStartThreshold;
@@ -121,6 +122,9 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
                     } else if (swipe == SWIPE_FROM_RIGHT) {
                         if (DEBUG) Slog.d(TAG, "Firing onSwipeFromRight");
                         mCallbacks.onSwipeFromRight();
+                    } else if (swipe == SWIPE_FROM_LEFT) {
+                        if (DEBUG) Slog.d(TAG, "Firing onSwipeFromLeft");
+                        mCallbacks.onSwipeFromLeft();
                     }
                 }
                 break;
@@ -207,6 +211,11 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
                 && x < fromX - mSwipeDistanceThreshold
                 && elapsed < SWIPE_TIMEOUT_MS) {
             return SWIPE_FROM_RIGHT;
+        }
+        if (fromX <= mSwipeStartThreshold
+                && x > fromX + mSwipeDistanceThreshold
+                && elapsed < SWIPE_TIMEOUT_MS) {
+            return SWIPE_FROM_LEFT;
         }
         return SWIPE_NONE;
     }
@@ -244,6 +253,7 @@ public class SystemGesturesPointerEventListener implements PointerEventListener
         void onSwipeFromTop();
         void onSwipeFromBottom();
         void onSwipeFromRight();
+               void onSwipeFromLeft();
         void onFling(int durationMs);
         void onDown();
         void onUpOrCancel();
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 8d2abc5..980f742 100755
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -1517,6 +1517,10 @@ public class PhoneWindowManager implements WindowManagerPolicy {
                             requestTransientBars(mNavigationBar);
                         }
                     }
+                    @Override
+                    public void onSwipeFromLeft() {
+                        // dothing
+                    }
                     @Override
                     public void onFling(int duration) {
                         if (mPowerManagerInternal != null) {

  • 添加手势动作
    在这里插入图片描述git clone https://github.com/iFinelioTower/CSDN -b systemui2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值