summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adrian Roos <roosa@google.com> 2016-02-25 16:22:36 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2016-02-25 16:22:38 +0000
commit1c7c9d45b4f9dc3f599aeb98bb69a43cf307e9ef (patch)
treea707c00e9c9fc61d20382d3d1ab56b64c5676f7b
parent256aa5afd7329c5d784220bed99b2cb3904092b4 (diff)
parentc5584ceaad422c96f978132aee4d21ee1f61fc7d (diff)
Merge "Fix anti falsing detection" into nyc-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java27
-rw-r--r--packages/SystemUI/src/com/android/systemui/classifier/HumanInteractionClassifier.java2
2 files changed, 22 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java
index 735a7c4bad4a..c09376bdd37e 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManager.java
@@ -23,6 +23,7 @@ import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Handler;
+import android.os.PowerManager;
import android.os.UserHandle;
import android.provider.Settings;
import android.view.MotionEvent;
@@ -64,6 +65,7 @@ public class FalsingManager implements SensorEventListener {
private boolean mBouncerOn = false;
private boolean mSessionActive = false;
private int mState = StatusBarState.SHADE;
+ private boolean mScreenOn;
protected final ContentObserver mSettingsObserver = new ContentObserver(mHandler) {
@Override
@@ -77,6 +79,7 @@ public class FalsingManager implements SensorEventListener {
mSensorManager = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
mDataCollector = DataCollector.getInstance(mContext);
mHumanInteractionClassifier = HumanInteractionClassifier.getInstance(mContext);
+ mScreenOn = context.getSystemService(PowerManager.class).isInteractive();
mContext.getContentResolver().registerContentObserver(
Settings.Secure.getUriFor(ENFORCE_BOUNCER), false,
@@ -98,17 +101,21 @@ public class FalsingManager implements SensorEventListener {
ENFORCE_BOUNCER, 0);
}
+ private boolean shouldSessionBeActive() {
+ return isEnabled() && mScreenOn &&
+ (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED);
+ }
+
private boolean sessionEntrypoint() {
- if (!mSessionActive && isEnabled() &&
- (mState == StatusBarState.KEYGUARD || mState == StatusBarState.SHADE_LOCKED)) {
+ if (!mSessionActive && shouldSessionBeActive()) {
onSessionStart();
return true;
}
return false;
}
- private void sessionExitpoint() {
- if (mSessionActive) {
+ private void sessionExitpoint(boolean force) {
+ if (mSessionActive && (force || !shouldSessionBeActive())) {
mSessionActive = false;
mSensorManager.unregisterListener(this);
}
@@ -167,15 +174,22 @@ public class FalsingManager implements SensorEventListener {
public void setStatusBarState(int state) {
mState = state;
+ if (shouldSessionBeActive()) {
+ sessionEntrypoint();
+ } else {
+ sessionExitpoint(false /* force */);
+ }
}
public void onScreenTurningOn() {
+ mScreenOn = true;
if (sessionEntrypoint()) {
mDataCollector.onScreenTurningOn();
}
}
public void onScreenOnFromTouch() {
+ mScreenOn = true;
if (sessionEntrypoint()) {
mDataCollector.onScreenOnFromTouch();
}
@@ -183,12 +197,13 @@ public class FalsingManager implements SensorEventListener {
public void onScreenOff() {
mDataCollector.onScreenOff();
- sessionExitpoint();
+ mScreenOn = false;
+ sessionExitpoint(false /* force */);
}
public void onSucccessfulUnlock() {
mDataCollector.onSucccessfulUnlock();
- sessionExitpoint();
+ sessionExitpoint(true /* force */);
}
public void onBouncerShown() {
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/HumanInteractionClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/HumanInteractionClassifier.java
index 7ddbdf0e6e70..45eb9ad3115a 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/HumanInteractionClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/HumanInteractionClassifier.java
@@ -119,7 +119,7 @@ public class HumanInteractionClassifier extends Classifier {
return;
}
- // If the user is dragging down the notification, he might want to drag it down
+ // If the user is dragging down the notification, they might want to drag it down
// enough to see the content, read it for a while and then lift the finger to open
// the notification. This kind of motion scores very bad in the Classifier so the
// MotionEvents which are close to the current position of the finger are not