diff --git a/base/services/core/java/com/android/server/wm/DisplayPolicy.java b/base/services/core/java/com/android/server/wm/DisplayPolicy.java
old mode 100644
new mode 100755
index 0d467c5..72d4a78
--- a/base/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/base/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -51,6 +51,8 @@ import static android.view.WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE;
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_TOUCH;
import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
import static android.view.WindowManager.INPUT_CONSUMER_NAVIGATION;
+import static android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN;
+import static android.view.WindowManager.ScreenshotSource.SCREENSHOT_KEY_CHORD;
import static android.view.WindowManager.LayoutParams.FIRST_APPLICATION_WINDOW;
import static android.view.WindowManager.LayoutParams.FIRST_SYSTEM_WINDOW;
import static android.view.WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON;
@@ -495,6 +497,17 @@ public class DisplayPolicy {
mSystemGestures = new SystemGesturesPointerEventListener(mContext, mHandler,
new SystemGesturesPointerEventListener.Callbacks() {
@Override
+ public void onSwipeVertically() {
+ synchronized (mLock) {
+ final Thread mThread = new Thread(new Runnable() {
+ @Override
+ public void run() {
+ takeScreenshot(TAKE_SCREENSHOT_FULLSCREEN,SCREENSHOT_KEY_CHORD);
+ }
+ });
+ mThread.start();
+ }
+ }
public void onSwipeFromTop() {
synchronized (mLock) {
if (mStatusBar != null) {
diff --git a/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java b/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java
old mode 100644
new mode 100755
index f3859b4..9b6bc97
--- a/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java
+++ b/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java
@@ -31,6 +31,7 @@ import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.WindowManagerPolicyConstants.PointerEventListener;
import android.widget.OverScroller;
+import android.util.Log;
/**
* Listens for system-wide input gestures, firing callbacks when detected.
@@ -49,6 +50,7 @@ class SystemGesturesPointerEventListener implements PointerEventListener {
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 static final int SWIPE_VERTICALLY = 5;
private final Context mContext;
private final Handler mHandler;
@@ -175,6 +177,11 @@ class SystemGesturesPointerEventListener implements PointerEventListener {
if (DEBUG) Slog.d(TAG, "Firing onSwipeFromLeft");
mCallbacks.onSwipeFromLeft();
}
+ final int swipeThreePointer = detectSwipeThreePointer(event);
+ mSwipeFireable = swipeThreePointer == SWIPE_NONE;
+ if (swipeThreePointer == SWIPE_VERTICALLY) {
+ @Override
+ public void run() {
+ takeScreenshot(TAKE_SCREENSHOT_FULLSCREEN,SCREENSHOT_KEY_CHORD);
+ }
+ });
+ mThread.start();
+ }
+ }
public void onSwipeFromTop() {
synchronized (mLock) {
if (mStatusBar != null) {
diff --git a/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java b/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java
old mode 100644
new mode 100755
index f3859b4..9b6bc97
--- a/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java
+++ b/base/services/core/java/com/android/server/wm/SystemGesturesPointerEventListener.java
@@ -31,6 +31,7 @@ import android.view.InputDevice;
import android.view.MotionEvent;
import android.view.WindowManagerPolicyConstants.PointerEventListener;
import android.widget.OverScroller;
+import android.util.Log;
/**
* Listens for system-wide input gestures, firing callbacks when detected.
@@ -49,6 +50,7 @@ class SystemGesturesPointerEventListener implements PointerEventListener {
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 static final int SWIPE_VERTICALLY = 5;
private final Context mContext;
private final Handler mHandler;
@@ -175,6 +177,11 @@ class SystemGesturesPointerEventListener implements PointerEventListener {
if (DEBUG) Slog.d(TAG, "Firing onSwipeFromLeft");
mCallbacks.onSwipeFromLeft();
}
+ final int swipeThreePointer = detectSwipeThreePointer(event);
+ mSwipeFireable = swipeThreePointer == SWIPE_NONE;
+ if (swipeThreePointer == SWIPE_VERTICALLY) {
+ mCallbacks.onSwipeVertically();
+ }
}
break;
case MotionEvent.ACTION_HOVER_MOVE:
@@ -234,6 +241,49 @@ class SystemGesturesPointerEventListener implements PointerEventListener {
return mDownPointers - 1;
}
+ private int detectSwipeThreePointer(MotionEvent move) {
+ final int historySize = move.getHistorySize();
+ final int pointerCount = move.getPointerCount();
+ if(3 != pointerCount) {
+ return SWIPE_NONE;
+ }
+ int swipe = SWIPE_NONE;
+ for (int p = 0; p < pointerCount; p++) {
+ final int pointerId = move.getPointerId(p);
+ final int i = findIndex(pointerId);
+ if (i != UNTRACKED_POINTER) {
+ for (int h = 0; h < historySize; h++) {
+ final long time = move.getHistoricalEventTime(h);
+ final float x = move.getHistoricalX(p, h);
+ final float y = move.getHistoricalY(p, h);
+ swipe = detectSwipeThreePointer(i, time, x, y);
+ if (swipe != SWIPE_VERTICALLY) {
+ return swipe;
+ }
+ }
+ swipe = detectSwipeThreePointer(i, move.getEventTime(), move.getX(p), move.getY(p));
+ if (swipe != SWIPE_VERTICALLY) {
+ return swipe;
+ }
+ }
+ }
+ return swipe;
+ }
+
+ private int detectSwipeThreePointer(int i, long time, float x, float y) {
+ final float fromX = mDownX[i];
+ final float fromY = mDownY[i];
+ final long elapsed = time - mDownTime[i];
+ if (DEBUG) Slog.d(TAG, "pointer " + mDownPointerId[i]
+ + " moved (" + fromX + "->" + x + "," + fromY + "->" + y + ") in " + elapsed);
+ if (fromY > mSwipeStartThreshold
+ && y > fromY + mSwipeDistanceThreshold * 9
+ && elapsed < SWIPE_TIMEOUT_MS) {
+ return SWIPE_VERTICALLY;
+ }
+ return SWIPE_NONE;
+ }
+
private int detectSwipe(MotionEvent move) {
final int historySize = move.getHistorySize();
final int pointerCount = move.getPointerCount();
@@ -336,5 +386,6 @@ class SystemGesturesPointerEventListener implements PointerEventListener {
void onMouseHoverAtBottom();
void onMouseLeaveFromEdge();
void onDebug();
+ void onSwipeVertically();
}
}
02-03
336
02-21
4356
12-09
1610
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交