Skip to content

Commit 02780e2

Browse files
committed
services: Introduce Three finger swipe gestures [1/2]
Signed-off-by: minaripenguin <minaripenguin@users.noreply.github.com>
1 parent cc44f03 commit 02780e2

File tree

2 files changed

+57
-10
lines changed

2 files changed

+57
-10
lines changed

services/core/java/com/android/server/policy/PhoneWindowManager.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,7 @@ void observe() {
11281128
Settings.System.LOCKSCREEN_ENABLE_POWER_MENU), true, this,
11291129
UserHandle.USER_ALL);
11301130
resolver.registerContentObserver(Settings.System.getUriFor(
1131-
Settings.System.THREE_FINGER_GESTURE), false, this,
1131+
"three_finger_gesture_action"), false, this,
11321132
UserHandle.USER_ALL);
11331133
resolver.registerContentObserver(Settings.System.getUriFor(
11341134
Settings.System.HARDWARE_KEYS_DISABLE), false, this,
@@ -3465,7 +3465,7 @@ void updateSettings(Handler handler) {
34653465
}
34663466

34673467
boolean threeFingerGesture = Settings.System.getIntForUser(resolver,
3468-
Settings.System.THREE_FINGER_GESTURE, 0, UserHandle.USER_CURRENT) == 1;
3468+
"three_finger_gesture_action", 0, UserHandle.USER_CURRENT) != 0;
34693469
if (mSwipeToScreenshot != null) {
34703470
if (haveEnableGesture != threeFingerGesture) {
34713471
haveEnableGesture = threeFingerGesture;
@@ -6984,12 +6984,7 @@ public void systemReady() {
69846984

69856985
GestureCallbacks gestureCallbacks = new GestureCallbacks(mContext, mCurrentUserId);
69866986

6987-
mSwipeToScreenshot = new SwipeToScreenshotListener(mContext, new SwipeToScreenshotListener.Callbacks() {
6988-
@Override
6989-
public void onSwipeThreeFinger() {
6990-
interceptScreenshotChord(TAKE_SCREENSHOT_FULLSCREEN, SCREENSHOT_KEY_OTHER, 0 /*pressDelay*/);
6991-
}
6992-
});
6987+
mSwipeToScreenshot = new SwipeToScreenshotListener(mContext, (SwipeToScreenshotListener.Callbacks) gestureCallbacks);
69936988

69946989
mShakeGestures = ShakeGestureService.getInstance(mContext, (ShakeGestureService.ShakeGesturesCallbacks) gestureCallbacks);
69956990
mShakeGestures.onStart();

services/core/java/com/android/server/policy/SwipeToScreenshotListener.java

Lines changed: 54 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424
import android.view.MotionEvent;
2525
import android.view.WindowManagerPolicyConstants.PointerEventListener;
2626

27+
import com.android.internal.util.android.VibrationUtils;
28+
2729
public class SwipeToScreenshotListener implements PointerEventListener {
2830
private static final String TAG = "SwipeToScreenshotListener";
2931
private static final int THREE_GESTURE_STATE_NONE = 0;
@@ -96,11 +98,52 @@ public void onPointerEvent(MotionEvent event) {
9698
}
9799
if (distance >= ((float) mThreeGestureThreshold)) {
98100
changeThreeGestureState(THREE_GESTURE_STATE_DETECTED_TRUE);
99-
mCallbacks.onSwipeThreeFinger();
101+
doAction();
100102
}
101103
}
102104
}
103105
}
106+
107+
private void doAction() {
108+
final int swipeGestureAction = Settings.System.getInt(mContext.getContentResolver(),
109+
"three_finger_gesture_action", 0);
110+
if (mCallbacks == null || swipeGestureAction == 0) return;
111+
switch (swipeGestureAction) {
112+
case 1:
113+
mCallbacks.onToggleTorch();
114+
break;
115+
case 2:
116+
mCallbacks.onMediaKeyDispatch();
117+
break;
118+
case 3:
119+
mCallbacks.onToggleVolumePanel();
120+
break;
121+
case 4:
122+
mCallbacks.onTurnScreenOnOrOff();
123+
break;
124+
case 5:
125+
mCallbacks.onClearAllNotifications();
126+
break;
127+
case 6:
128+
mCallbacks.onToggleRingerModes();
129+
break;
130+
case 7:
131+
mCallbacks.onScreenshotTaken();
132+
break;
133+
case 8:
134+
mCallbacks.onKillApp();
135+
break;
136+
case 9:
137+
mCallbacks.onVoiceLaunch();
138+
break;
139+
case 10:
140+
mCallbacks.onLaunchSearch();
141+
break;
142+
default:
143+
break;
144+
}
145+
VibrationUtils.triggerVibration(mContext, 2);
146+
}
104147

105148
private void changeThreeGestureState(int state) {
106149
if (mThreeGestureState != state){
@@ -143,6 +186,15 @@ private boolean checkIsStartThreeGesture(MotionEvent event) {
143186
}
144187

145188
interface Callbacks {
146-
void onSwipeThreeFinger();
189+
void onVoiceLaunch();
190+
void onLaunchSearch();
191+
void onClearAllNotifications();
192+
void onMediaKeyDispatch();
193+
void onScreenshotTaken();
194+
void onToggleRingerModes();
195+
void onToggleTorch();
196+
void onToggleVolumePanel();
197+
void onKillApp();
198+
void onTurnScreenOnOrOff();
147199
}
148200
}

0 commit comments

Comments
 (0)