Merge "Adding SecureTouchListener to drop suspicious touches" into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7c95e968ad
@@ -0,0 +1,44 @@
|
||||
package com.android.settingslib;
|
||||
|
||||
import android.os.SystemClock;
|
||||
import android.view.MotionEvent;
|
||||
import android.view.View;
|
||||
import android.widget.Toast;
|
||||
|
||||
/**
|
||||
* A touch listener which consumes touches when another window is partly or wholly obscuring the
|
||||
* window containing the view this listener is attached to.
|
||||
* Optionally accepts a string to show the user as a toast when consuming an insecure touch
|
||||
*/
|
||||
public class SecureTouchListener implements View.OnTouchListener {
|
||||
|
||||
private static final long TAP_DEBOUNCE_TIME = 2000;
|
||||
private long mLastToastTime = 0;
|
||||
private String mWarningText;
|
||||
|
||||
public SecureTouchListener() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
public SecureTouchListener(String warningText) {
|
||||
mWarningText = warningText;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onTouch(View v, MotionEvent event) {
|
||||
if ((event.getFlags() & MotionEvent.FLAG_WINDOW_IS_OBSCURED) != 0
|
||||
|| (event.getFlags() & MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED) != 0) {
|
||||
if (mWarningText != null) {
|
||||
// Show a toast warning the user
|
||||
final long currentTime = SystemClock.uptimeMillis();
|
||||
if (currentTime - mLastToastTime > TAP_DEBOUNCE_TIME) {
|
||||
mLastToastTime = currentTime;
|
||||
Toast.makeText(v.getContext(), mWarningText, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
// Consume the touch event
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user