fix: GlobalActionRecorder register invalid subscriber; opt: rememove getRootInActiveWindow on every onAccessibilitySerive()

This commit is contained in:
hyb1996
2017-12-09 00:23:23 +08:00
parent b6f251da0b
commit 87c7cc73c3
6 changed files with 22 additions and 24 deletions

View File

@@ -8,8 +8,8 @@ android {
applicationId "com.stardust.scriptdroid" applicationId "com.stardust.scriptdroid"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 23 targetSdkVersion 23
versionCode 233 versionCode 234
versionName "3.0.0 Alpha33" versionName "3.0.0 Alpha34"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
ndk { ndk {

View File

@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":1},"path":"inrt-release.apk","properties":{"packageId":"com.stardust.auojs.inrt","split":"","minSdkVersion":"17"}}] [{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":234},"path":"release-3.0.0 Alpha34.apk","properties":{"packageId":"com.stardust.scriptdroid","split":"","minSdkVersion":"17"}}]

View File

@@ -18,7 +18,6 @@ import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder; import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.ClipboardUtil; import com.stardust.util.ClipboardUtil;
import org.greenrobot.eventbus.EventBus;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -53,7 +52,6 @@ public class GlobalActionRecorder implements Recorder.OnStateChangedListener {
return new InputEventToRootAutomatorRecorder(); return new InputEventToRootAutomatorRecorder();
} }
}; };
EventBus.getDefault().register(this);
} }

View File

@@ -61,20 +61,24 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
Log.v(TAG, "onAccessibilityEvent: " + event); Log.v(TAG, "onAccessibilityEvent: " + event);
if (!containsAllEventTypes && !eventTypes.contains(event.getEventType())) if (!containsAllEventTypes && !eventTypes.contains(event.getEventType()))
return; return;
AccessibilityNodeInfo root = super.getRootInActiveWindow(); int type = event.getEventType();
if (root != null) { if (type == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED ||
mFastRootInActiveWindow = root; type == AccessibilityEvent.TYPE_VIEW_FOCUSED) {
Log.v(TAG, "root not null: " + event); AccessibilityNodeInfo root = super.getRootInActiveWindow();
if (root != null) {
mFastRootInActiveWindow = root;
}
} }
for (Map.Entry<Integer, AccessibilityDelegate> entry : mDelegates.entrySet()) { for (Map.Entry<Integer, AccessibilityDelegate> entry : mDelegates.entrySet()) {
AccessibilityDelegate delegate = entry.getValue(); AccessibilityDelegate delegate = entry.getValue();
Set<Integer> types = delegate.getEventTypes(); Set<Integer> types = delegate.getEventTypes();
if (types != null && !delegate.getEventTypes().contains(event.getEventType())) if (types != null && !delegate.getEventTypes().contains(event.getEventType()))
continue; continue;
long start = System.currentTimeMillis(); //long start = System.currentTimeMillis();
if (delegate.onAccessibilityEvent(AccessibilityService.this, event)) if (delegate.onAccessibilityEvent(AccessibilityService.this, event))
break; break;
Log.v(TAG, "millis: " + (System.currentTimeMillis() - start) + " delegate: " + entry.getValue().getClass().getName()); //Log.v(TAG, "millis: " + (System.currentTimeMillis() - start) + " delegate: " + entry.getValue().getClass().getName());
} }
} }
@@ -89,12 +93,9 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
if (mKeyEventExecutor == null) { if (mKeyEventExecutor == null) {
mKeyEventExecutor = Executors.newSingleThreadExecutor(); mKeyEventExecutor = Executors.newSingleThreadExecutor();
} }
mKeyEventExecutor.execute(new Runnable() { mKeyEventExecutor.execute(() -> {
@Override stickOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
public void run() { mOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
stickOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
mOnKeyObserver.onKeyEvent(event.getKeyCode(), event);
}
}); });
return false; return false;
} }

View File

@@ -8,8 +8,8 @@ android {
applicationId "com.stardust.auojs.inrt" applicationId "com.stardust.auojs.inrt"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 23 targetSdkVersion 23
versionCode 1 versionCode 34
versionName "0.0.1" versionName "1.0.0 Alpha34"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
ndk { ndk {
abiFilters 'armeabi-v7a' abiFilters 'armeabi-v7a'

View File

@@ -3,10 +3,10 @@ package com.stardust.auojs.inrt;
import android.Manifest; import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar; import android.support.v7.widget.Toolbar;
import android.view.Menu; import android.view.Menu;
import android.view.MenuItem; import android.view.MenuItem;
@@ -15,7 +15,6 @@ import com.stardust.auojs.inrt.rt.AutoJs;
import com.stardust.autojs.core.console.ConsoleView; import com.stardust.autojs.core.console.ConsoleView;
import com.stardust.autojs.core.console.StardustConsole; import com.stardust.autojs.core.console.StardustConsole;
import com.stardust.autojs.script.StringScriptSource; import com.stardust.autojs.script.StringScriptSource;
import com.stardust.pio.PFile;
import com.stardust.pio.PFiles; import com.stardust.pio.PFiles;
import java.util.ArrayList; import java.util.ArrayList;
@@ -56,22 +55,22 @@ public class MainActivity extends AppCompatActivity {
AutoJs.getInstance().getGlobalConsole().log(e); AutoJs.getInstance().getGlobalConsole().log(e);
} }
}).start(); }).start();
if(!Pref.shouldShowMainActivity()){ if (!Pref.shouldShowMainActivity()) {
finish(); finish();
} }
} }
@Override @Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
System.out.println(PFiles.read("/sdcard/1.txt"));
runScript(); runScript();
} }
protected void checkPermission(String... permissions) { protected void checkPermission(String... permissions) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
String[] requestPermissions = getRequestPermissions(permissions); String[] requestPermissions = getRequestPermissions(permissions);
if (requestPermissions.length > 0) { if (requestPermissions.length > 0) {
requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE); requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE);
}else { } else {
runScript(); runScript();
} }
} else { } else {