Loading packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +3 −2 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.UnlockMethodCache; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardMonitor; import com.android.systemui.util.AsyncSensorManager; import com.android.systemui.util.InjectionInflationController; import com.android.systemui.util.leak.GarbageMonitor; Loading Loading @@ -144,9 +145,9 @@ public class SystemUIFactory { LockscreenWallpaper lockscreenWallpaper, TriConsumer<ScrimState, Float, GradientColors> scrimStateListener, Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters, AlarmManager alarmManager) { AlarmManager alarmManager, KeyguardMonitor keyguardMonitor) { return new ScrimController(scrimBehind, scrimInFront, scrimStateListener, scrimVisibleListener, dozeParameters, alarmManager); scrimVisibleListener, dozeParameters, alarmManager, keyguardMonitor); } public NotificationIconAreaController createNotificationIconAreaController(Context context, Loading packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +3 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.provider.DeviceConfig; import android.view.MotionEvent; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.classifier.brightline.BrightLineFalsingManager; import com.android.systemui.classifier.brightline.FalsingDataProvider; Loading Loading @@ -102,7 +103,8 @@ public class FalsingManagerProxy implements FalsingManager { } else { mInternalFalsingManager = new BrightLineFalsingManager( new FalsingDataProvider(context.getResources().getDisplayMetrics()), Dependency.get(AsyncSensorManager.class) Dependency.get(AsyncSensorManager.class), KeyguardUpdateMonitor.getInstance(context) ); } Loading packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java +27 −3 Original line number Diff line number Diff line Loading @@ -23,11 +23,14 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.hardware.biometrics.BiometricSourceType; import android.net.Uri; import android.util.Log; import android.view.MotionEvent; import com.android.internal.logging.MetricsLogger; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.classifier.Classifier; import com.android.systemui.plugins.FalsingManager; Loading @@ -47,11 +50,13 @@ public class BrightLineFalsingManager implements FalsingManager { private final SensorManager mSensorManager; private final FalsingDataProvider mDataProvider; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private boolean mSessionStarted; private MetricsLogger mMetricsLogger; private int mIsFalseTouchCalls; private boolean mShowingAod; private boolean mScreenOn; private boolean mJustUnlockedWithFace; private final ExecutorService mBackgroundExecutor = Executors.newSingleThreadExecutor(); Loading @@ -68,10 +73,27 @@ public class BrightLineFalsingManager implements FalsingManager { } }; public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider, SensorManager sensorManager) { private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback = new KeyguardUpdateMonitorCallback() { @Override public void onBiometricAuthenticated(int userId, BiometricSourceType biometricSourceType) { if (userId == KeyguardUpdateMonitor.getCurrentUser() && biometricSourceType == BiometricSourceType.FACE) { mJustUnlockedWithFace = true; } } }; public BrightLineFalsingManager( FalsingDataProvider falsingDataProvider, SensorManager sensorManager, KeyguardUpdateMonitor keyguardUpdateMonitor) { mKeyguardUpdateMonitor = keyguardUpdateMonitor; mDataProvider = falsingDataProvider; mSensorManager = sensorManager; mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback); mMetricsLogger = new MetricsLogger(); mClassifiers = new ArrayList<>(); DistanceClassifier distanceClassifier = new DistanceClassifier(mDataProvider); Loading Loading @@ -110,6 +132,7 @@ public class BrightLineFalsingManager implements FalsingManager { if (!mSessionStarted && !mShowingAod && mScreenOn) { logDebug("Starting Session"); mSessionStarted = true; mJustUnlockedWithFace = false; registerSensors(); mClassifiers.forEach(FalsingClassifier::onSessionStarted); } Loading Loading @@ -141,7 +164,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch() { boolean r = mClassifiers.stream().anyMatch(falsingClassifier -> { boolean r = !mJustUnlockedWithFace && mClassifiers.stream().anyMatch(falsingClassifier -> { boolean result = falsingClassifier.isFalseTouch(); if (result) { logInfo(falsingClassifier.getClass().getName() + ": true"); Loading Loading @@ -335,6 +358,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public void cleanup() { unregisterSensors(); mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback); } static void logDebug(String msg) { Loading packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +10 −3 Original line number Diff line number Diff line Loading @@ -292,6 +292,7 @@ public class DozeSensors { final AlarmTimeout mCooldownTimer; final AlwaysOnDisplayPolicy mPolicy; final Sensor mSensor; final boolean mUsingBrightnessSensor; public ProxSensor(AlwaysOnDisplayPolicy policy) { mPolicy = policy; Loading @@ -302,6 +303,7 @@ public class DozeSensors { // if available. Sensor sensor = DozeSensors.findSensorWithType(mSensorManager, mContext.getString(R.string.doze_brightness_sensor_type)); mUsingBrightnessSensor = sensor != null; if (sensor == null) { sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); } Loading Loading @@ -331,8 +333,7 @@ public class DozeSensors { return; } if (register) { mRegistered = mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), mRegistered = mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL, mHandler); } else { mSensorManager.unregisterListener(this); Loading @@ -345,7 +346,13 @@ public class DozeSensors { public void onSensorChanged(android.hardware.SensorEvent event) { if (DEBUG) Log.d(TAG, "onSensorChanged " + event); if (mUsingBrightnessSensor) { // The custom brightness sensor is gated by the proximity sensor and will return 0 // whenever prox is covered. mCurrentlyFar = event.values[0] > 0; } else { mCurrentlyFar = event.values[0] >= event.sensor.getMaximumRange(); } mProxCallback.accept(mCurrentlyFar); long now = SystemClock.elapsedRealtime(); Loading packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +7 −4 Original line number Diff line number Diff line Loading @@ -296,11 +296,14 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene mY = y - containerLocation[1]; } private final Callback mKeyguardCallback = () -> { private final Callback mKeyguardCallback = new Callback() { @Override public void onKeyguardShowingChanged() { if (!isAttachedToWindow()) return; if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) { hide(); } } }; private final AnimatorListener mExpandAnimationListener = new AnimatorListenerAdapter() { Loading Loading
packages/SystemUI/src/com/android/systemui/SystemUIFactory.java +3 −2 Original line number Diff line number Diff line Loading @@ -66,6 +66,7 @@ import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.UnlockMethodCache; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardMonitor; import com.android.systemui.util.AsyncSensorManager; import com.android.systemui.util.InjectionInflationController; import com.android.systemui.util.leak.GarbageMonitor; Loading Loading @@ -144,9 +145,9 @@ public class SystemUIFactory { LockscreenWallpaper lockscreenWallpaper, TriConsumer<ScrimState, Float, GradientColors> scrimStateListener, Consumer<Integer> scrimVisibleListener, DozeParameters dozeParameters, AlarmManager alarmManager) { AlarmManager alarmManager, KeyguardMonitor keyguardMonitor) { return new ScrimController(scrimBehind, scrimInFront, scrimStateListener, scrimVisibleListener, dozeParameters, alarmManager); scrimVisibleListener, dozeParameters, alarmManager, keyguardMonitor); } public NotificationIconAreaController createNotificationIconAreaController(Context context, Loading
packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java +3 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.provider.DeviceConfig; import android.view.MotionEvent; import com.android.internal.annotations.VisibleForTesting; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.systemui.Dependency; import com.android.systemui.classifier.brightline.BrightLineFalsingManager; import com.android.systemui.classifier.brightline.FalsingDataProvider; Loading Loading @@ -102,7 +103,8 @@ public class FalsingManagerProxy implements FalsingManager { } else { mInternalFalsingManager = new BrightLineFalsingManager( new FalsingDataProvider(context.getResources().getDisplayMetrics()), Dependency.get(AsyncSensorManager.class) Dependency.get(AsyncSensorManager.class), KeyguardUpdateMonitor.getInstance(context) ); } Loading
packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java +27 −3 Original line number Diff line number Diff line Loading @@ -23,11 +23,14 @@ import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.hardware.biometrics.BiometricSourceType; import android.net.Uri; import android.util.Log; import android.view.MotionEvent; import com.android.internal.logging.MetricsLogger; import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.systemui.classifier.Classifier; import com.android.systemui.plugins.FalsingManager; Loading @@ -47,11 +50,13 @@ public class BrightLineFalsingManager implements FalsingManager { private final SensorManager mSensorManager; private final FalsingDataProvider mDataProvider; private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; private boolean mSessionStarted; private MetricsLogger mMetricsLogger; private int mIsFalseTouchCalls; private boolean mShowingAod; private boolean mScreenOn; private boolean mJustUnlockedWithFace; private final ExecutorService mBackgroundExecutor = Executors.newSingleThreadExecutor(); Loading @@ -68,10 +73,27 @@ public class BrightLineFalsingManager implements FalsingManager { } }; public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider, SensorManager sensorManager) { private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback = new KeyguardUpdateMonitorCallback() { @Override public void onBiometricAuthenticated(int userId, BiometricSourceType biometricSourceType) { if (userId == KeyguardUpdateMonitor.getCurrentUser() && biometricSourceType == BiometricSourceType.FACE) { mJustUnlockedWithFace = true; } } }; public BrightLineFalsingManager( FalsingDataProvider falsingDataProvider, SensorManager sensorManager, KeyguardUpdateMonitor keyguardUpdateMonitor) { mKeyguardUpdateMonitor = keyguardUpdateMonitor; mDataProvider = falsingDataProvider; mSensorManager = sensorManager; mKeyguardUpdateMonitor.registerCallback(mKeyguardUpdateCallback); mMetricsLogger = new MetricsLogger(); mClassifiers = new ArrayList<>(); DistanceClassifier distanceClassifier = new DistanceClassifier(mDataProvider); Loading Loading @@ -110,6 +132,7 @@ public class BrightLineFalsingManager implements FalsingManager { if (!mSessionStarted && !mShowingAod && mScreenOn) { logDebug("Starting Session"); mSessionStarted = true; mJustUnlockedWithFace = false; registerSensors(); mClassifiers.forEach(FalsingClassifier::onSessionStarted); } Loading Loading @@ -141,7 +164,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public boolean isFalseTouch() { boolean r = mClassifiers.stream().anyMatch(falsingClassifier -> { boolean r = !mJustUnlockedWithFace && mClassifiers.stream().anyMatch(falsingClassifier -> { boolean result = falsingClassifier.isFalseTouch(); if (result) { logInfo(falsingClassifier.getClass().getName() + ": true"); Loading Loading @@ -335,6 +358,7 @@ public class BrightLineFalsingManager implements FalsingManager { @Override public void cleanup() { unregisterSensors(); mKeyguardUpdateMonitor.removeCallback(mKeyguardUpdateCallback); } static void logDebug(String msg) { Loading
packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java +10 −3 Original line number Diff line number Diff line Loading @@ -292,6 +292,7 @@ public class DozeSensors { final AlarmTimeout mCooldownTimer; final AlwaysOnDisplayPolicy mPolicy; final Sensor mSensor; final boolean mUsingBrightnessSensor; public ProxSensor(AlwaysOnDisplayPolicy policy) { mPolicy = policy; Loading @@ -302,6 +303,7 @@ public class DozeSensors { // if available. Sensor sensor = DozeSensors.findSensorWithType(mSensorManager, mContext.getString(R.string.doze_brightness_sensor_type)); mUsingBrightnessSensor = sensor != null; if (sensor == null) { sensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); } Loading Loading @@ -331,8 +333,7 @@ public class DozeSensors { return; } if (register) { mRegistered = mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), mRegistered = mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL, mHandler); } else { mSensorManager.unregisterListener(this); Loading @@ -345,7 +346,13 @@ public class DozeSensors { public void onSensorChanged(android.hardware.SensorEvent event) { if (DEBUG) Log.d(TAG, "onSensorChanged " + event); if (mUsingBrightnessSensor) { // The custom brightness sensor is gated by the proximity sensor and will return 0 // whenever prox is covered. mCurrentlyFar = event.values[0] > 0; } else { mCurrentlyFar = event.values[0] >= event.sensor.getMaximumRange(); } mProxCallback.accept(mCurrentlyFar); long now = SystemClock.elapsedRealtime(); Loading
packages/SystemUI/src/com/android/systemui/qs/customize/QSCustomizer.java +7 −4 Original line number Diff line number Diff line Loading @@ -296,11 +296,14 @@ public class QSCustomizer extends LinearLayout implements OnMenuItemClickListene mY = y - containerLocation[1]; } private final Callback mKeyguardCallback = () -> { private final Callback mKeyguardCallback = new Callback() { @Override public void onKeyguardShowingChanged() { if (!isAttachedToWindow()) return; if (Dependency.get(KeyguardMonitor.class).isShowing() && !mOpening) { hide(); } } }; private final AnimatorListener mExpandAnimationListener = new AnimatorListenerAdapter() { Loading