嵌入式系統移植 - 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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章