add: stable mode for AccessibilityService

This commit is contained in:
hyb1996
2017-08-14 21:23:07 +08:00
parent 8034dc7b6b
commit 405075757e
13 changed files with 83 additions and 30 deletions

View File

@@ -1,5 +1,6 @@
package com.stardust.autojs.runtime.api;
import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Notification;
import android.content.Context;
import android.graphics.Point;
@@ -7,6 +8,7 @@ import android.os.Handler;
import android.view.KeyEvent;
import android.view.accessibility.AccessibilityEvent;
import com.stardust.autojs.R;
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.runtime.ScriptBridges;
import com.stardust.autojs.runtime.exception.ScriptException;
@@ -49,13 +51,16 @@ public class Events extends EventEmitter implements OnKeyListener, TouchObserver
public void observeKey() {
if (mListeningKey)
return;
AccessibilityService service = mAccessibilityBridge.getService();
if (service == null)
throw new ScriptException("AccessibilityService = null");
if ((service.getServiceInfo().flags & AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS) == 0) {
throw new ScriptException(mContext.getString(R.string.text_should_enable_key_observing));
}
ensureHandler();
mLoopers.waitWhenIdle(true);
mListeningKey = true;
mAccessibilityBridge.ensureServiceEnabled();
AccessibilityService service = mAccessibilityBridge.getService();
if (service == null)
throw new ScriptException();
service.getOnKeyObserver().addListener(this);
}