summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
diff options
context:
space:
mode:
authorBeverly <beverlyt@google.com>2021-07-15 12:16:50 -0400
committerBeverly <beverlyt@google.com>2021-07-15 13:33:26 -0400
commit286813a76870c3a763fb22c46cebfe28fcb7bf75 (patch)
treee759b363e1ae2aebcb89a7762aece7bf8b7cc843 /packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
parent71089198bf93a0df82b125e45de8fc7481e3ed5b (diff)
Add haptic feedback on the kg lock icon
Test: manual, adb shell dumpsys vibrator_manager Bug: 193089985 Change-Id: I8c3e5d1931a3399d4ecf0aac501cd74e0b7d7bec
Diffstat (limited to 'packages/SystemUI/src/com/android/keyguard/LockIconViewController.java')
-rw-r--r--packages/SystemUI/src/com/android/keyguard/LockIconViewController.java32
1 files changed, 31 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
index a7bd4c8e3d27..cc0381fa3b6f 100644
--- a/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
+++ b/packages/SystemUI/src/com/android/keyguard/LockIconViewController.java
@@ -28,6 +28,9 @@ import android.graphics.drawable.AnimatedVectorDrawable;
import android.graphics.drawable.Drawable;
import android.hardware.biometrics.BiometricSourceType;
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal;
+import android.media.AudioAttributes;
+import android.os.Process;
+import android.os.Vibrator;
import android.util.DisplayMetrics;
import android.view.GestureDetector;
import android.view.GestureDetector.SimpleOnGestureListener;
@@ -43,6 +46,7 @@ import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.biometrics.AuthController;
+import com.android.systemui.biometrics.UdfpsController;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.FalsingManager;
@@ -67,6 +71,13 @@ import javax.inject.Inject;
*/
@StatusBarComponent.StatusBarScope
public class LockIconViewController extends ViewController<LockIconView> implements Dumpable {
+
+ private static final AudioAttributes VIBRATION_SONIFICATION_ATTRIBUTES =
+ new AudioAttributes.Builder()
+ .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+ .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
+ .build();
+
@NonNull private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@NonNull private final KeyguardViewController mKeyguardViewController;
@NonNull private final StatusBarStateController mStatusBarStateController;
@@ -83,6 +94,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
@NonNull private final Drawable mLockIcon;
@NonNull private final CharSequence mUnlockedLabel;
@NonNull private final CharSequence mLockedLabel;
+ @Nullable private final Vibrator mVibrator;
private boolean mIsDozing;
private boolean mIsBouncerShowing;
@@ -119,7 +131,8 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
@NonNull DumpManager dumpManager,
@NonNull AccessibilityManager accessibilityManager,
@NonNull ConfigurationController configurationController,
- @NonNull @Main DelayableExecutor executor
+ @NonNull @Main DelayableExecutor executor,
+ @Nullable Vibrator vibrator
) {
super(view);
mStatusBarStateController = statusBarStateController;
@@ -131,6 +144,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
mAccessibilityManager = accessibilityManager;
mConfigurationController = configurationController;
mExecutor = executor;
+ mVibrator = vibrator;
final Context context = view.getContext();
mLockIcon = mView.getContext().getResources().getDrawable(
@@ -459,6 +473,14 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
// intercept all following touches until we see MotionEvent.ACTION_CANCEL UP or
// MotionEvent.ACTION_UP (see #onTouchEvent)
mDownDetected = true;
+ if (mVibrator != null) {
+ mVibrator.vibrate(
+ Process.myUid(),
+ getContext().getOpPackageName(),
+ UdfpsController.EFFECT_CLICK,
+ "lockIcon-onDown",
+ VIBRATION_SONIFICATION_ATTRIBUTES);
+ }
return true;
}
@@ -467,6 +489,14 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
return;
}
+ if (mVibrator != null) {
+ mVibrator.vibrate(
+ Process.myUid(),
+ getContext().getOpPackageName(),
+ UdfpsController.EFFECT_CLICK,
+ "lockIcon-onLongPress",
+ VIBRATION_SONIFICATION_ATTRIBUTES);
+ }
onAffordanceClick();
}