api(events): events.setKeyInterceptionEnabled()
This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
package com.stardust.view.accessibility;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.Log;
|
||||
import android.view.KeyEvent;
|
||||
@@ -13,10 +11,7 @@ import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.SortedMap;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.TreeMap;
|
||||
import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
@@ -40,6 +35,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
||||
private static boolean containsAllEventTypes = false;
|
||||
private static final Set<Integer> eventTypes = new HashSet<>();
|
||||
private OnKeyListener.Observer mOnKeyObserver = new OnKeyListener.Observer();
|
||||
private KeyInterceptor.Observer mKeyInterrupterObserver = new KeyInterceptor.Observer();
|
||||
private ExecutorService mKeyEventExecutor;
|
||||
private AccessibilityNodeInfo mFastRootInActiveWindow;
|
||||
|
||||
@@ -97,7 +93,11 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
||||
stickOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
|
||||
mOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
|
||||
});
|
||||
return false;
|
||||
return mKeyInterrupterObserver.onInterceptKeyEvent(event);
|
||||
}
|
||||
|
||||
public KeyInterceptor.Observer getKeyInterrupterObserver() {
|
||||
return mKeyInterrupterObserver;
|
||||
}
|
||||
|
||||
public OnKeyListener.Observer getOnKeyObserver() {
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
package com.stardust.view.accessibility;
|
||||
|
||||
import android.view.KeyEvent;
|
||||
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2018/2/27.
|
||||
*/
|
||||
|
||||
public interface KeyInterceptor {
|
||||
|
||||
boolean onInterceptKeyEvent(KeyEvent event);
|
||||
|
||||
class Observer implements KeyInterceptor {
|
||||
private CopyOnWriteArrayList<KeyInterceptor> mKeyInterceptors = new CopyOnWriteArrayList<>();
|
||||
|
||||
public void addKeyInterrupter(KeyInterceptor interrupter){
|
||||
mKeyInterceptors.add(interrupter);
|
||||
}
|
||||
|
||||
public boolean removeKeyInterrupter(KeyInterceptor interrupter){
|
||||
return mKeyInterceptors.remove(interrupter);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onInterceptKeyEvent(KeyEvent event) {
|
||||
for(KeyInterceptor interrupter : mKeyInterceptors){
|
||||
try {
|
||||
if(interrupter.onInterceptKeyEvent(event)){
|
||||
return true;
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user