refactor(autojs): move inputevent to package core

This commit is contained in:
hyb1996
2017-08-06 14:40:02 +08:00
parent 9174a77676
commit 5ee99b5379
65 changed files with 382 additions and 588 deletions

4
.idea/misc.xml generated
View File

@@ -6,8 +6,8 @@
<item index="0" class="java.lang.String" itemvalue="android.support.annotation.Keep" /> <item index="0" class="java.lang.String" itemvalue="android.support.annotation.Keep" />
<item index="1" class="java.lang.String" itemvalue="android.webkit.JavascriptInterface" /> <item index="1" class="java.lang.String" itemvalue="android.webkit.JavascriptInterface" />
<item index="2" class="java.lang.String" itemvalue="butterknife.OnClick" /> <item index="2" class="java.lang.String" itemvalue="butterknife.OnClick" />
<item index="3" class="java.lang.String" itemvalue="com.stardust.autojs.runtime.ScriptClass" /> <item index="3" class="java.lang.String" itemvalue="com.stardust.autojs.annotation.ScriptClass" />
<item index="4" class="java.lang.String" itemvalue="com.stardust.autojs.runtime.ScriptInterface" /> <item index="4" class="java.lang.String" itemvalue="com.stardust.autojs.annotation.ScriptInterface" />
<item index="5" class="java.lang.String" itemvalue="com.stardust.view.ViewBind.Click" /> <item index="5" class="java.lang.String" itemvalue="com.stardust.view.ViewBind.Click" />
<item index="6" class="java.lang.String" itemvalue="com.stardust.view.ViewBinding.Check" /> <item index="6" class="java.lang.String" itemvalue="com.stardust.view.ViewBinding.Check" />
<item index="7" class="java.lang.String" itemvalue="com.stardust.view.ViewBinding.Click" /> <item index="7" class="java.lang.String" itemvalue="com.stardust.view.ViewBinding.Click" />

View File

@@ -9,8 +9,8 @@ android {
applicationId "com.stardust.scriptdroid" applicationId "com.stardust.scriptdroid"
minSdkVersion 17 minSdkVersion 17
targetSdkVersion 23 targetSdkVersion 23
versionCode 158 versionCode 159
versionName "2.0.16 Alpha2" versionName "2.0.16 Beta"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true multiDexEnabled true
ndk { ndk {

View File

@@ -4,10 +4,7 @@ import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import com.stardust.autojs.runtime.api.AutomatorConfig; import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
import com.stardust.scriptdroid.autojs.AutoJs;
import org.mozilla.javascript.NativeArray;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@@ -129,6 +126,8 @@ public class Pref {
} }
def().edit().putLong(KEY_LAST_SHOW_AD_MILLIS, System.currentTimeMillis()).apply(); def().edit().putLong(KEY_LAST_SHOW_AD_MILLIS, System.currentTimeMillis()).apply();
return true; return true;
case "Off":
return false;
} }
return true; return true;
} }

View File

@@ -12,18 +12,17 @@ import com.stardust.app.SimpleActivityLifecycleCallbacks;
import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.ScriptEngineService;
import com.stardust.autojs.ScriptEngineServiceBuilder; import com.stardust.autojs.ScriptEngineServiceBuilder;
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine; import com.stardust.autojs.engine.LoopBasedJavaScriptEngine;
import com.stardust.autojs.engine.RhinoJavaScriptEngine;
import com.stardust.autojs.engine.RootAutomatorEngine; import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.engine.ScriptEngine; import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.engine.ScriptEngineManager; import com.stardust.autojs.engine.ScriptEngineManager;
import com.stardust.autojs.runtime.AccessibilityBridge; import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.ScriptException; import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.api.AppUtils; import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.Console;
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester; import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
import com.stardust.autojs.runtime.record.inputevent.InputEventObserver; import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.script.AutoFileSource; import com.stardust.autojs.script.AutoFileSource;
import com.stardust.autojs.script.JavaScriptSource; import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;
@@ -36,7 +35,7 @@ import com.stardust.util.ScreenMetrics;
import com.stardust.util.Supplier; import com.stardust.util.Supplier;
import com.stardust.util.UiHandler; import com.stardust.util.UiHandler;
import com.stardust.view.accessibility.AccessibilityInfoProvider; import com.stardust.view.accessibility.AccessibilityInfoProvider;
import com.stardust.autojs.runtime.record.accessibility.AccessibilityActionRecorder; import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool; import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
import com.stardust.scriptdroid.ui.console.JraskaConsole; import com.stardust.scriptdroid.ui.console.JraskaConsole;

View File

@@ -0,0 +1,28 @@
package com.stardust.scriptdroid.autojs.record;
import com.stardust.autojs.core.record.Recorder;
/**
* Created by Stardust on 2017/8/6.
*/
public class GlobalRecorder extends Recorder.AbstractRecorder {
private Recorder mRecorder;
@Override
protected void startImpl() {
}
@Override
protected void stopImpl() {
}
@Override
public String getCode() {
return null;
}
}

View File

@@ -1,7 +1,5 @@
package com.stardust.scriptdroid.external.floatingwindow.menu.content; package com.stardust.scriptdroid.external.floatingwindow.menu.content;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
@@ -16,11 +14,11 @@ import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.app.DialogUtils; import com.stardust.app.DialogUtils;
import com.stardust.autojs.runtime.record.Recorder; import com.stardust.autojs.core.record.Recorder;
import com.stardust.autojs.runtime.record.accessibility.AccessibilityActionRecorder; import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
import com.stardust.autojs.runtime.record.inputevent.InputEventObserver; import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.runtime.record.inputevent.KeyObserver; import com.stardust.autojs.core.inputevent.ShellKeyObserver;
import com.stardust.autojs.runtime.record.inputevent.TouchRecorder; import com.stardust.autojs.core.record.inputevent.TouchRecorder;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref; import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.R;
@@ -28,7 +26,6 @@ import com.stardust.scriptdroid.accessibility.AccessibilityEventHelper;
import com.stardust.scriptdroid.autojs.AutoJs; import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService; import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.ui.common.ScriptOperations; import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder; import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.ClipboardUtil; import com.stardust.util.ClipboardUtil;
import com.stardust.util.MessageEvent; import com.stardust.util.MessageEvent;
@@ -43,14 +40,12 @@ import butterknife.OnClick;
import io.mattcarroll.hover.Navigator; import io.mattcarroll.hover.Navigator;
import io.mattcarroll.hover.NavigatorContent; import io.mattcarroll.hover.NavigatorContent;
import static android.content.Context.CLIPBOARD_SERVICE;
/** /**
* Created by Stardust on 2017/3/12. * Created by Stardust on 2017/3/12.
*/ */
public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStateChangedListener, KeyObserver.KeyListener { public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStateChangedListener, ShellKeyObserver.KeyListener {
private View mView; private View mView;
@BindView(R.id.sw_recorded_by_root) @BindView(R.id.sw_recorded_by_root)
@@ -76,7 +71,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
private TouchRecorder mTouchRecorder; private TouchRecorder mTouchRecorder;
private Context mContext; private Context mContext;
private boolean mDiscard = false; private boolean mDiscard = false;
private KeyObserver mKeyObserver; private ShellKeyObserver mKeyObserver;
private InputEventObserver mInputEventObserver = InputEventObserver.getGlobal(); private InputEventObserver mInputEventObserver = InputEventObserver.getGlobal();
private OnKeyListener mVolumeKeyListener = new OnKeyListener() { private OnKeyListener mVolumeKeyListener = new OnKeyListener() {
@Override @Override
@@ -101,7 +96,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
AccessibilityService.getStickOnKeyObserver().addListener(mVolumeKeyListener); AccessibilityService.getStickOnKeyObserver().addListener(mVolumeKeyListener);
mTouchRecorder = TouchRecorder.getGlobal(context); mTouchRecorder = TouchRecorder.getGlobal(context);
if (Pref.hasRecordTrigger()) { if (Pref.hasRecordTrigger()) {
mKeyObserver = new KeyObserver(); mKeyObserver = new ShellKeyObserver();
mInputEventObserver.addListener(mKeyObserver); mInputEventObserver.addListener(mKeyObserver);
mKeyObserver.setKeyListener(this); mKeyObserver.setKeyListener(this);
} }

View File

@@ -8,7 +8,7 @@ import com.stardust.autojs.execution.ExecutionConfig;
import com.stardust.autojs.execution.ScriptExecution; import com.stardust.autojs.execution.ScriptExecution;
import com.stardust.autojs.execution.ScriptExecutionListener; import com.stardust.autojs.execution.ScriptExecutionListener;
import com.stardust.autojs.execution.SimpleScriptExecutionListener; import com.stardust.autojs.execution.SimpleScriptExecutionListener;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.script.ScriptSource; import com.stardust.autojs.script.ScriptSource;
import com.stardust.autojs.script.StringScriptSource; import com.stardust.autojs.script.StringScriptSource;
import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.App;

View File

@@ -1,83 +0,0 @@
package com.stardust.scriptdroid.service;
import android.app.Activity;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.hardware.display.DisplayManager;
import android.hardware.display.VirtualDisplay;
import android.media.ImageReader;
import android.media.projection.MediaProjection;
import android.media.projection.MediaProjectionManager;
import android.os.Build;
import android.os.IBinder;
import android.support.annotation.RequiresApi;
import android.util.DisplayMetrics;
import android.view.WindowManager;
/**
* Created by Stardust on 2017/1/19.
*/
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
public class MediaProjectionScreenCaptureService extends Service {
private ImageReader mImageReader;
private int mScreenWidth;
private int mScreenHeight;
private int mScreenDensity;
private MediaProjection mMediaProjection;
private VirtualDisplay mVirtualDisplay;
public static Intent mResultData;
@Override
public void onCreate() {
if (mResultData == null) {
}
WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics metrics = new DisplayMetrics();
windowManager.getDefaultDisplay().getMetrics(metrics);
mScreenDensity = metrics.densityDpi;
mScreenWidth = metrics.widthPixels;
mScreenHeight = metrics.heightPixels;
createImageReader();
startVirtualDisplay();
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
private void createImageReader() {
mImageReader = ImageReader.newInstance(mScreenWidth, mScreenHeight, PixelFormat.RGBA_8888, 1);
}
public void startVirtualDisplay() {
mMediaProjection = getMediaProjectionManager().getMediaProjection(Activity.RESULT_OK, mResultData);
mVirtualDisplay = mMediaProjection.createVirtualDisplay("screen-mirror",
mScreenWidth, mScreenHeight, mScreenDensity, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
mImageReader.getSurface(), null, null);
}
private MediaProjectionManager getMediaProjectionManager() {
return (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
}
@Override
public void onDestroy() {
if (mVirtualDisplay != null) {
mVirtualDisplay.release();
mVirtualDisplay = null;
}
if (mMediaProjection != null) {
mMediaProjection.stop();
mMediaProjection = null;
}
super.onDestroy();
}
}

View File

@@ -0,0 +1,85 @@
package com.stardust.widget;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.graphics.Paint;
import android.preference.PreferenceManager;
import android.support.v7.widget.SwitchCompat;
import android.util.AttributeSet;
import android.widget.CompoundButton;
import com.stardust.scriptdroid.R;
import java.util.Objects;
/**
* Created by Stardust on 2017/8/6.
*/
public class PrefSwitch extends SwitchCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
private String mPrefKey;
private SharedPreferences mSharedPreferences;
public PrefSwitch(Context context) {
super(context);
init(null);
}
public PrefSwitch(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
public PrefSwitch(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs);
}
private void init(AttributeSet attrs) {
mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext());
if (attrs != null) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.PrefSwitch);
mPrefKey = a.getString(R.styleable.PrefSwitch_key);
boolean defaultValue = a.getBoolean(R.styleable.PrefSwitch_defaultValue, false);
if (mPrefKey != null)
setChecked(mSharedPreferences.getBoolean(mPrefKey, defaultValue), false);
else
setChecked(defaultValue, false);
a.recycle();
}
mSharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
private void notifyPrefChanged(boolean isChecked) {
if (mPrefKey == null)
return;
mSharedPreferences.edit()
.putBoolean(mPrefKey, isChecked)
.apply();
}
@Override
public void setChecked(boolean checked) {
setChecked(checked, true);
}
public void setChecked(boolean checked, boolean notifyChange) {
super.setChecked(checked);
if (notifyChange) {
notifyPrefChanged(checked);
}
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if (mPrefKey != null && mPrefKey.equals(key)) {
setChecked(mSharedPreferences.getBoolean(mPrefKey, isChecked()), false);
}
}
}

View File

@@ -34,13 +34,15 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:padding="16dp"> android:padding="16dp">
<android.support.v7.widget.SwitchCompat <com.stardust.widget.PrefSwitch
android:id="@+id/sw_recorded_by_root" android:id="@+id/sw_recorded_by_root"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:textOff="@string/text_off" android:textOff="@string/text_off"
android:textOn="@string/text_on"/> android:textOn="@string/text_on"
app:defaultValue="false"
app:key="@string/key_record_with_root"/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@@ -7,6 +7,12 @@
<attr name="icon_color" format="color|reference"/> <attr name="icon_color" format="color|reference"/>
</declare-styleable> </declare-styleable>
<declare-styleable name="PrefSwitch">
<attr name="key" format="string|reference"/>
<attr name="defaultValue" format="boolean"/>
</declare-styleable>
<declare-styleable name="MaterialEditText"> <declare-styleable name="MaterialEditText">
<attr name="met_baseColor" format="color"/> <attr name="met_baseColor" format="color"/>

View File

@@ -216,6 +216,7 @@
<string name="text_edit_script">编辑脚本</string> <string name="text_edit_script">编辑脚本</string>
<string name="text_run_script">运行脚本</string> <string name="text_run_script">运行脚本</string>
<string name="text_import_script">导入脚本文件</string> <string name="text_import_script">导入脚本文件</string>
<string name="key_record_with_root">key_record_with_root</string>
<string-array name="record_control_keys"> <string-array name="record_control_keys">
@@ -235,11 +236,13 @@
<string-array name="ad_showing_mode_keys"> <string-array name="ad_showing_mode_keys">
<item>默认</item> <item>默认</item>
<item>每天显示一次</item> <item>每天显示一次</item>
<item>关闭广告(╥﹏╥)</item>
</string-array> </string-array>
<string-array name="ad_showing_mode_values"> <string-array name="ad_showing_mode_values">
<item>Default</item> <item>Default</item>
<item>OncePerDay</item> <item>OncePerDay</item>
<item>Off</item>
</string-array> </string-array>
</resources> </resources>

View File

@@ -1,32 +1,18 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_no_root_script_record"> <com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_record">
<com.stardust.theme.preference.ThemeColorSwitchPreference <com.stardust.theme.preference.ThemeColorSwitchPreference
android:defaultValue="false" android:defaultValue="false"
android:key="@string/key_use_volume_control_record" android:key="@string/key_use_volume_control_record"
android:summary="@string/summary_use_volume_control_record" android:summary="@string/summary_use_volume_control_record"
android:title="@string/text_use_volume_control_record"/> android:title="@string/text_use_volume_control_record"/>
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
<com.stardust.theme.preference.ThemeColorSwitchPreference
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_record_with_root"> android:defaultValue="false"
android:key="@string/key_record_with_root"
<com.afollestad.materialdialogs.prefs.MaterialListPreference android:title="@string/text_record_with_root"/>
android:defaultValue="@string/text_none"
android:entries="@array/record_control_keys"
android:entryValues="@array/record_control_values"
android:key="@string/key_start_record_trigger"
android:title="@string/text_use_key_to_start_record"
/>
<com.afollestad.materialdialogs.prefs.MaterialListPreference
android:defaultValue="@string/text_none"
android:entries="@array/record_control_keys"
android:entryValues="@array/record_control_values"
android:key="@string/key_stop_record_trigger"
android:title="@string/text_use_key_to_stop_record"
/>
</com.stardust.theme.preference.ThemeColorPreferenceCategory> </com.stardust.theme.preference.ThemeColorPreferenceCategory>
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_running"> <com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_running">

View File

@@ -15,6 +15,8 @@ module.exports = function(__runtime__, scope){
return __runtime__.isStopped(); return __runtime__.isStopped();
} }
scope.isShuttingDown = scope.isShopped;
scope.notStopped = function(){ scope.notStopped = function(){
return !isStopped(); return !isStopped();
} }

View File

@@ -31,7 +31,7 @@ import java.io.PrintWriter;
import java.util.LinkedHashSet; import java.util.LinkedHashSet;
import java.util.Set; import java.util.Set;
import static com.stardust.autojs.runtime.ScriptInterruptedException.causedByInterrupted; import static com.stardust.autojs.runtime.exception.ScriptInterruptedException.causedByInterrupted;
/** /**
* Created by Stardust on 2017/1/23. * Created by Stardust on 2017/1/23.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.annotation;
import java.lang.annotation.ElementType; import java.lang.annotation.ElementType;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.core.accessibility;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;

View File

@@ -1,20 +1,17 @@
package com.stardust.autojs.runtime.simpleaction; package com.stardust.autojs.core.accessibility;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.accessibilityservice.GestureDescription; import android.accessibilityservice.GestureDescription;
import android.graphics.Rect; import android.graphics.Rect;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.util.Log; import android.util.Log;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.autojs.runtime.AccessibilityBridge; import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.autojs.runtime.ScriptInterface;
import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.api.AutomatorConfig; import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
import com.stardust.autojs.runtime.api.Loopers;
import com.stardust.automator.GlobalActionAutomator; import com.stardust.automator.GlobalActionAutomator;
import com.stardust.automator.UiObject; import com.stardust.automator.UiObject;
import com.stardust.automator.simple_action.ActionFactory; import com.stardust.automator.simple_action.ActionFactory;

View File

@@ -1,9 +1,6 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.inputevent;
import android.content.Context;
import android.hardware.input.InputManager;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.util.Log;
import android.view.InputDevice; import android.view.InputDevice;
/** /**

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.inputevent;
/** /**
* Created by Stardust on 2017/8/5. * Created by Stardust on 2017/8/5.

View File

@@ -1,9 +1,10 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.inputevent;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextUtils; import android.text.TextUtils;
import com.stardust.autojs.core.record.inputevent.EventFormatException;
import com.stardust.autojs.runtime.api.Shell; import com.stardust.autojs.runtime.api.Shell;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
@@ -34,11 +35,11 @@ public class InputEventObserver {
} }
double time; public double time;
String device; public String device;
String type; public String type;
String code; public String code;
String value; public String value;
public InputEvent(double time, String device, String type, String code, String value) { public InputEvent(double time, String device, String type, String code, String value) {
this.time = time; this.time = time;

View File

@@ -0,0 +1,54 @@
package com.stardust.autojs.core.inputevent;
import java.util.concurrent.CopyOnWriteArrayList;
/**
* Created by Stardust on 2017/8/6.
*/
public class KeyEventDispatcher {
public interface OnKeyListener {
void onVolumeUp();
void onVolumeDown();
void onCamera();
}
private static KeyEventDispatcher sSingleton = new KeyEventDispatcher();
private CopyOnWriteArrayList<OnKeyListener> mOnKeyListeners = new CopyOnWriteArrayList<>();
public static KeyEventDispatcher getSingleton() {
return sSingleton;
}
public void addOnKeyListener(OnKeyListener listener) {
mOnKeyListeners.add(listener);
}
public boolean removeOnKeyListener(OnKeyListener listener) {
return mOnKeyListeners.remove(listener);
}
public void notifyVolumeUp() {
for (OnKeyListener listener : mOnKeyListeners) {
listener.onVolumeUp();
}
}
public void notifyVolumeDown() {
for (OnKeyListener listener : mOnKeyListeners) {
listener.onVolumeDown();
}
}
public void notifyCarema() {
for (OnKeyListener listener : mOnKeyListeners) {
listener.onCamera();
}
}
}

View File

@@ -0,0 +1,88 @@
package com.stardust.autojs.core.inputevent;
import android.support.annotation.NonNull;
import android.util.SparseArray;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Stardust on 2017/5/4.
*/
public class ShellKeyObserver implements InputEventObserver.InputEventListener {
public interface KeyListener {
void onKeyDown(String keyName);
void onKeyUp(String keyName);
}
private static final Map<String, Integer> keyNameToCode = new HashMap<>();
private static final SparseArray<String> keyCodeToName = new SparseArray<>();
private KeyListener mKeyListener;
public ShellKeyObserver() {
}
public void setKeyListener(KeyListener keyListener) {
mKeyListener = keyListener;
}
@Override
public void onInputEvent(@NonNull InputEventObserver.InputEvent event) {
if (!event.type.equals("0001")) {
return;
}
if (event.value.equalsIgnoreCase("00000000")) {
notifyKeyUp(keyCodeToKeyName(Integer.parseInt(event.code, 16)));
}
if (event.value.equalsIgnoreCase("00000001")) {
notifyKeyDown(keyCodeToKeyName(Integer.parseInt(event.code, 16)));
}
}
public static String keyCodeToKeyName(int code) {
return keyCodeToName.get(code);
}
public static int keyNameToCode(String name) {
Integer code = keyNameToCode.get(name);
if (code == null)
return -1;
return code;
}
private void notifyKeyDown(String keyName) {
if (mKeyListener != null) {
mKeyListener.onKeyDown(keyName);
}
}
private void notifyKeyUp(String keyName) {
if (mKeyListener != null) {
mKeyListener.onKeyUp(keyName);
}
}
static {
try {
for (Field field : InputEventCodes.class.getFields()) {
if (field.getName().startsWith("KEY_")) {
int keyCode = (int) field.get(null);
keyCodeToName.put(keyCode, field.getName());
keyNameToCode.put(field.getName(), keyCode);
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}

View File

@@ -1,8 +1,8 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import static com.stardust.autojs.runtime.record.inputevent.InputEventRecorder.parseDeviceNumber; import static com.stardust.autojs.core.record.inputevent.InputEventRecorder.parseDeviceNumber;
/** /**
* Created by Stardust on 2017/7/20. * Created by Stardust on 2017/7/20.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.internal; package com.stardust.autojs.core.internal;
/** /**
* Created by Stardust on 2017/7/19. * Created by Stardust on 2017/7/19.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.record; package com.stardust.autojs.core.record;
import java.util.Arrays; import java.util.Arrays;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.record.accessibility; package com.stardust.autojs.core.record.accessibility;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.os.Build; import android.os.Build;

View File

@@ -1,9 +1,9 @@
package com.stardust.autojs.runtime.record.accessibility; package com.stardust.autojs.core.record.accessibility;
import android.accessibilityservice.AccessibilityService; import android.accessibilityservice.AccessibilityService;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import com.stardust.autojs.runtime.record.Recorder; import com.stardust.autojs.core.record.Recorder;
import com.stardust.view.accessibility.AccessibilityDelegate; import com.stardust.view.accessibility.AccessibilityDelegate;
import java.util.Arrays; import java.util.Arrays;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.record.inputevent;
/** /**
* Created by Stardust on 2017/3/7. * Created by Stardust on 2017/3/7.

View File

@@ -1,9 +1,9 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.util.Log;
import com.stardust.autojs.runtime.record.Recorder; import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.core.record.Recorder;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@@ -38,7 +38,7 @@ public abstract class InputEventRecorder extends Recorder.AbstractRecorder imple
public abstract String getCode(); public abstract String getCode();
static int parseDeviceNumber(String device) { protected static int parseDeviceNumber(String device) {
Matcher matcher = LAST_INT_PATTERN.matcher(device); Matcher matcher = LAST_INT_PATTERN.matcher(device);
if (matcher.find()) { if (matcher.find()) {
String someNumberStr = matcher.group(1); String someNumberStr = matcher.group(1);

View File

@@ -1,12 +1,11 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.record.inputevent;
import android.content.Context; import android.content.Context;
import android.hardware.input.InputManager;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.util.Log; import android.util.Log;
import android.view.InputDevice;
import android.view.MotionEvent;
import com.stardust.autojs.core.inputevent.InputEventCodes;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.engine.RootAutomatorEngine; import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.runtime.api.RootAutomator; import com.stardust.autojs.runtime.api.RootAutomator;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;

View File

@@ -1,7 +1,9 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import static com.stardust.util.ScreenMetrics.getDeviceScreenHeight; import static com.stardust.util.ScreenMetrics.getDeviceScreenHeight;
import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth; import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth;

View File

@@ -1,7 +1,9 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.record.inputevent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import static com.stardust.util.ScreenMetrics.getDeviceScreenHeight; import static com.stardust.util.ScreenMetrics.getDeviceScreenHeight;
import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth; import static com.stardust.util.ScreenMetrics.getDeviceScreenWidth;

View File

@@ -1,8 +1,9 @@
package com.stardust.autojs.runtime.record.inputevent; package com.stardust.autojs.core.record.inputevent;
import android.content.Context; import android.content.Context;
import com.stardust.autojs.runtime.record.Recorder; import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.core.record.Recorder;
/** /**
* Created by Stardust on 2017/3/16. * Created by Stardust on 2017/3/16.

View File

@@ -5,7 +5,7 @@ import android.util.Log;
import com.stardust.autojs.BuildConfig; import com.stardust.autojs.BuildConfig;
import com.stardust.autojs.rhino.AndroidContextFactory; import com.stardust.autojs.rhino.AndroidContextFactory;
import com.stardust.autojs.rhino.RhinoAndroidHelper; import com.stardust.autojs.rhino.RhinoAndroidHelper;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.script.JavaScriptSource; import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.autojs.script.StringScriptSource; import com.stardust.autojs.script.StringScriptSource;
import com.stardust.pio.PFile; import com.stardust.pio.PFile;

View File

@@ -6,11 +6,8 @@ import android.util.Log;
import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.api.ProcessShell; import com.stardust.autojs.runtime.api.ProcessShell;
import com.stardust.autojs.runtime.api.Shell; import com.stardust.autojs.core.inputevent.InputDevices;
import com.stardust.autojs.runtime.record.inputevent.InputDevices;
import com.stardust.autojs.script.AutoFileSource; import com.stardust.autojs.script.AutoFileSource;
import com.stardust.autojs.script.JavaScriptFileSource;
import com.stardust.autojs.script.ScriptSource;
import com.stardust.pio.PFile; import com.stardust.pio.PFile;
import java.io.File; import java.io.File;

View File

@@ -2,7 +2,7 @@ package com.stardust.autojs.engine;
import android.support.annotation.CallSuper; import android.support.annotation.CallSuper;
import com.stardust.autojs.runtime.ScriptException; import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.script.ScriptSource; import com.stardust.autojs.script.ScriptSource;
import java.util.Map; import java.util.Map;

View File

@@ -4,7 +4,7 @@ import android.util.Log;
import com.stardust.autojs.engine.ScriptEngine; import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.engine.ScriptEngineManager; import com.stardust.autojs.engine.ScriptEngineManager;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.script.ScriptSource; import com.stardust.autojs.script.ScriptSource;
/** /**

View File

@@ -1,7 +1,7 @@
package com.stardust.autojs.rhino; package com.stardust.autojs.rhino;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.tools.shell.ShellContextFactory; import org.mozilla.javascript.tools.shell.ShellContextFactory;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api; package com.stardust.autojs.runtime;
/** /**
* Created by Stardust on 2017/7/21. * Created by Stardust on 2017/7/21.

View File

@@ -6,6 +6,8 @@ import android.os.Looper;
import com.stardust.autojs.R; import com.stardust.autojs.R;
import com.stardust.autojs.ScriptEngineService; import com.stardust.autojs.ScriptEngineService;
import com.stardust.autojs.annotation.ScriptVariable;
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.engine.ScriptEngine; import com.stardust.autojs.engine.ScriptEngine;
import com.stardust.autojs.rhino.AndroidClassLoader; import com.stardust.autojs.rhino.AndroidClassLoader;
import com.stardust.autojs.runtime.api.AbstractShell; import com.stardust.autojs.runtime.api.AbstractShell;
@@ -14,13 +16,15 @@ import com.stardust.autojs.runtime.api.Console;
import com.stardust.autojs.runtime.api.Engines; import com.stardust.autojs.runtime.api.Engines;
import com.stardust.autojs.runtime.api.Events; import com.stardust.autojs.runtime.api.Events;
import com.stardust.autojs.runtime.api.Loopers; import com.stardust.autojs.runtime.api.Loopers;
import com.stardust.autojs.runtime.api.ScriptBridges;
import com.stardust.autojs.runtime.api.Timers; import com.stardust.autojs.runtime.api.Timers;
import com.stardust.autojs.runtime.api.UiSelector; import com.stardust.autojs.runtime.api.UiSelector;
import com.stardust.autojs.runtime.api.image.Images; import com.stardust.autojs.runtime.api.image.Images;
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester; import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
import com.stardust.autojs.runtime.api.ui.Dialogs; import com.stardust.autojs.runtime.api.ui.Dialogs;
import com.stardust.autojs.runtime.simpleaction.SimpleActionAutomator; import com.stardust.autojs.runtime.exception.ScriptEnvironmentException;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.core.accessibility.SimpleActionAutomator;
import com.stardust.concurrent.VolatileBox; import com.stardust.concurrent.VolatileBox;
import com.stardust.autojs.runtime.api.ui.UI; import com.stardust.autojs.runtime.api.ui.UI;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime.api; package com.stardust.autojs.runtime.accessibility;
/** /**
* Created by Stardust on 2017/4/29. * Created by Stardust on 2017/4/29.

View File

@@ -3,7 +3,7 @@ package com.stardust.autojs.runtime.api;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.util.Log; import android.util.Log;
import com.stardust.autojs.runtime.ScriptException; import com.stardust.autojs.runtime.exception.ScriptException;
/** /**
* Created by Stardust on 2017/5/1. * Created by Stardust on 2017/5/1.

View File

@@ -11,7 +11,7 @@ import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.webkit.MimeTypeMap; import android.webkit.MimeTypeMap;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.util.IntentUtil; import com.stardust.util.IntentUtil;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;

View File

@@ -2,7 +2,7 @@ package com.stardust.autojs.runtime.api;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.annotation.ScriptInterface;
/** /**
* Created by Stardust on 2017/4/2. * Created by Stardust on 2017/4/2.

View File

@@ -3,7 +3,8 @@ package com.stardust.autojs.runtime.api;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import com.stardust.autojs.runtime.ScriptException; import com.stardust.autojs.runtime.ScriptBridges;
import com.stardust.autojs.runtime.exception.ScriptException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;

View File

@@ -7,10 +7,11 @@ import android.os.Handler;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import com.stardust.autojs.runtime.AccessibilityBridge; import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.runtime.ScriptException; import com.stardust.autojs.runtime.ScriptBridges;
import com.stardust.autojs.runtime.record.inputevent.InputEventObserver; import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.record.inputevent.TouchObserver; import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.core.inputevent.TouchObserver;
import com.stardust.view.accessibility.AccessibilityService; import com.stardust.view.accessibility.AccessibilityService;
import com.stardust.view.accessibility.NotificationListener; import com.stardust.view.accessibility.NotificationListener;
import com.stardust.view.accessibility.OnKeyListener; import com.stardust.view.accessibility.OnKeyListener;

View File

@@ -10,7 +10,7 @@ import android.webkit.WebView;
import android.webkit.WebViewClient; import android.webkit.WebViewClient;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.Scriptable;

View File

@@ -4,8 +4,8 @@ import android.content.Context;
import android.webkit.ValueCallback; import android.webkit.ValueCallback;
import android.webkit.WebView; import android.webkit.WebView;
import com.stardust.autojs.runtime.ScriptClass; import com.stardust.autojs.annotation.ScriptClass;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.annotation.ScriptInterface;
import org.mozilla.javascript.Scriptable; import org.mozilla.javascript.Scriptable;

View File

@@ -1,14 +1,11 @@
package com.stardust.autojs.runtime.api; package com.stardust.autojs.runtime.api;
import android.graphics.Paint;
import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.MessageQueue; import android.os.MessageQueue;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.lang.ThreadCompat; import com.stardust.lang.ThreadCompat;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
/** /**

View File

@@ -3,7 +3,6 @@ package com.stardust.autojs.runtime.api;
import android.content.Context; import android.content.Context;
import com.stardust.autojs.engine.RootAutomatorEngine; import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.runtime.record.inputevent.InputEventCodes;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;
@@ -12,7 +11,7 @@ import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import static com.stardust.autojs.runtime.record.inputevent.InputEventCodes.*; import static com.stardust.autojs.core.inputevent.InputEventCodes.*;
/** /**
* Created by Stardust on 2017/7/16. * Created by Stardust on 2017/7/16.

View File

@@ -5,7 +5,7 @@ import android.os.Handler;
import android.preference.PreferenceManager; import android.preference.PreferenceManager;
import android.util.Log; import android.util.Log;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.lang.ThreadCompat; import com.stardust.lang.ThreadCompat;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;

View File

@@ -1,10 +1,9 @@
package com.stardust.autojs.runtime.api; package com.stardust.autojs.runtime.api;
import android.os.Handler; import android.os.Handler;
import android.os.Looper;
import android.util.SparseArray; import android.util.SparseArray;
import java.util.concurrent.ConcurrentHashMap; import com.stardust.autojs.runtime.ScriptBridges;
/** /**
* Created by Stardust on 2017/7/21. * Created by Stardust on 2017/7/21.

View File

@@ -1,15 +1,13 @@
package com.stardust.autojs.runtime.api; package com.stardust.autojs.runtime.api;
import android.content.Intent;
import android.net.Uri;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log; import android.util.Log;
import android.view.accessibility.AccessibilityNodeInfo; import android.view.accessibility.AccessibilityNodeInfo;
import com.stardust.autojs.runtime.AccessibilityBridge; import com.stardust.autojs.core.accessibility.AccessibilityBridge;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.accessibility.AutomatorConfig;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.automator.ActionArgument; import com.stardust.automator.ActionArgument;
import com.stardust.automator.UiGlobalSelector; import com.stardust.automator.UiGlobalSelector;
import com.stardust.automator.UiObject; import com.stardust.automator.UiObject;
@@ -17,9 +15,6 @@ import com.stardust.automator.UiObjectCollection;
import com.stardust.automator.filter.DfsFilter; import com.stardust.automator.filter.DfsFilter;
import com.stardust.util.DeveloperUtils; import com.stardust.util.DeveloperUtils;
import com.stardust.view.accessibility.AccessibilityNodeInfoAllocator; import com.stardust.view.accessibility.AccessibilityNodeInfoAllocator;
import com.stardust.view.accessibility.AccessibilityService;
import org.mozilla.javascript.NativeArray;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS; import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ACCESSIBILITY_FOCUS;
import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_COLUMN_INT; import static android.support.v4.view.accessibility.AccessibilityNodeInfoCompat.ACTION_ARGUMENT_COLUMN_INT;

View File

@@ -5,9 +5,8 @@ import android.graphics.Rect;
import android.media.Image; import android.media.Image;
import android.os.Build; import android.os.Build;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.view.Display;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.concurrent.VolatileBox; import com.stardust.concurrent.VolatileBox;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;

View File

@@ -5,9 +5,7 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix; import android.graphics.Matrix;
import android.graphics.Point;
import android.media.Image; import android.media.Image;
import android.os.Build; import android.os.Build;
import android.os.Handler; import android.os.Handler;
@@ -18,9 +16,8 @@ import android.view.Surface;
import android.view.WindowManager; import android.view.WindowManager;
import com.stardust.autojs.runtime.ScriptRuntime; import com.stardust.autojs.runtime.ScriptRuntime;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.runtime.ScriptVariable; import com.stardust.autojs.annotation.ScriptVariable;
import com.stardust.autojs.runtime.api.Loopers;
import com.stardust.concurrent.VolatileBox; import com.stardust.concurrent.VolatileBox;
import com.stardust.pio.UncheckedIOException; import com.stardust.pio.UncheckedIOException;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;

View File

@@ -3,7 +3,6 @@ package com.stardust.autojs.runtime.api.image;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Paint;
import android.graphics.PixelFormat; import android.graphics.PixelFormat;
import android.hardware.display.DisplayManager; import android.hardware.display.DisplayManager;
import android.hardware.display.VirtualDisplay; import android.hardware.display.VirtualDisplay;
@@ -18,7 +17,7 @@ import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi; import android.support.annotation.RequiresApi;
import android.util.Log; import android.util.Log;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.util.ScreenMetrics; import com.stardust.util.ScreenMetrics;
/** /**

View File

@@ -2,15 +2,14 @@ package com.stardust.autojs.runtime.api.ui;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.ContextWrapper;
import android.text.TextUtils; import android.text.TextUtils;
import android.view.ContextThemeWrapper; import android.view.ContextThemeWrapper;
import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.MaterialDialog;
import com.afollestad.materialdialogs.Theme; import com.afollestad.materialdialogs.Theme;
import com.stardust.autojs.R; import com.stardust.autojs.R;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.runtime.api.AppUtils; import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.concurrent.VolatileBox; import com.stardust.concurrent.VolatileBox;
import com.stardust.util.ArrayUtils; import com.stardust.util.ArrayUtils;

View File

@@ -5,8 +5,8 @@ import android.content.Intent;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.view.WindowManager; import android.view.WindowManager;
import com.stardust.autojs.runtime.ScriptInterface; import com.stardust.autojs.annotation.ScriptInterface;
import com.stardust.autojs.runtime.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.runtime.api.AbstractConsole; import com.stardust.autojs.runtime.api.AbstractConsole;
import com.stardust.autojs.runtime.api.Console; import com.stardust.autojs.runtime.api.Console;
import com.stardust.enhancedfloaty.FloatyService; import com.stardust.enhancedfloaty.FloatyService;

View File

@@ -1,10 +1,10 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.runtime.exception;
/** /**
* Created by Stardust on 2017/7/1. * Created by Stardust on 2017/7/1.
*/ */
public class ScriptEnvironmentException extends RuntimeException { public class ScriptEnvironmentException extends ScriptException {
public ScriptEnvironmentException(String s) { public ScriptEnvironmentException(String s) {
super(s); super(s);
} }

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.runtime.exception;
/** /**
* Created by Stardust on 2017/1/29. * Created by Stardust on 2017/1/29.

View File

@@ -1,4 +1,4 @@
package com.stardust.autojs.runtime; package com.stardust.autojs.runtime.exception;
/** /**
* Created by Stardust on 2017/4/30. * Created by Stardust on 2017/4/30.

View File

@@ -1,356 +0,0 @@
package com.stardust.autojs.runtime.record.inputevent;
import android.content.Context;
import android.support.annotation.NonNull;
import android.util.SparseArray;
import android.view.KeyEvent;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Stardust on 2017/5/4.
*/
public class KeyObserver implements InputEventObserver.InputEventListener {
public static final int KEY_RESERVED = 0;
public static final int KEY_ESC = 1;
public static final int KEY_1 = 2;
public static final int KEY_2 = 3;
public static final int KEY_3 = 4;
public static final int KEY_4 = 5;
public static final int KEY_5 = 6;
public static final int KEY_6 = 7;
public static final int KEY_7 = 8;
public static final int KEY_8 = 9;
public static final int KEY_9 = 10;
public static final int KEY_0 = 11;
public static final int KEY_MINUS = 12;
public static final int KEY_EQUAL = 13;
public static final int KEY_BACKSPACE = 14;
public static final int KEY_TAB = 15;
public static final int KEY_Q = 16;
public static final int KEY_W = 17;
public static final int KEY_E = 18;
public static final int KEY_R = 19;
public static final int KEY_T = 20;
public static final int KEY_Y = 21;
public static final int KEY_U = 22;
public static final int KEY_I = 23;
public static final int KEY_O = 24;
public static final int KEY_P = 25;
public static final int KEY_LEFTBRACE = 26;
public static final int KEY_RIGHTBRACE = 27;
public static final int KEY_ENTER = 28;
public static final int KEY_LEFTCTRL = 29;
public static final int KEY_A = 30;
public static final int KEY_S = 31;
public static final int KEY_D = 32;
public static final int KEY_F = 33;
public static final int KEY_G = 34;
public static final int KEY_H = 35;
public static final int KEY_J = 36;
public static final int KEY_K = 37;
public static final int KEY_L = 38;
public static final int KEY_SEMICOLON = 39;
public static final int KEY_APOSTROPHE = 40;
public static final int KEY_GRAVE = 41;
public static final int KEY_LEFTSHIFT = 42;
public static final int KEY_BACKSLASH = 43;
public static final int KEY_Z = 44;
public static final int KEY_X = 45;
public static final int KEY_C = 46;
public static final int KEY_V = 47;
public static final int KEY_B = 48;
public static final int KEY_N = 49;
public static final int KEY_M = 50;
public static final int KEY_COMMA = 51;
public static final int KEY_DOT = 52;
public static final int KEY_SLASH = 53;
public static final int KEY_RIGHTSHIFT = 54;
public static final int KEY_KPASTERISK = 55;
public static final int KEY_LEFTALT = 56;
public static final int KEY_SPACE = 57;
public static final int KEY_CAPSLOCK = 58;
public static final int KEY_F1 = 59;
public static final int KEY_F2 = 60;
public static final int KEY_F3 = 61;
public static final int KEY_F4 = 62;
public static final int KEY_F5 = 63;
public static final int KEY_F6 = 64;
public static final int KEY_F7 = 65;
public static final int KEY_F8 = 66;
public static final int KEY_F9 = 67;
public static final int KEY_F10 = 68;
public static final int KEY_NUMLOCK = 69;
public static final int KEY_SCROLLLOCK = 70;
public static final int KEY_KP7 = 71;
public static final int KEY_KP8 = 72;
public static final int KEY_KP9 = 73;
public static final int KEY_KPMINUS = 74;
public static final int KEY_KP4 = 75;
public static final int KEY_KP5 = 76;
public static final int KEY_KP6 = 77;
public static final int KEY_KPPLUS = 78;
public static final int KEY_KP1 = 79;
public static final int KEY_KP2 = 80;
public static final int KEY_KP3 = 81;
public static final int KEY_KP0 = 82;
public static final int KEY_KPDOT = 83;
public static final int KEY_ZENKAKUHANKAKU = 85;
public static final int KEY_102ND = 86;
public static final int KEY_F11 = 87;
public static final int KEY_F12 = 88;
public static final int KEY_RO = 89;
public static final int KEY_KATAKANA = 90;
public static final int KEY_HIRAGANA = 91;
public static final int KEY_HENKAN = 92;
public static final int KEY_KATAKANAHIRAGANA = 93;
public static final int KEY_MUHENKAN = 94;
public static final int KEY_KPJPCOMMA = 95;
public static final int KEY_KPENTER = 96;
public static final int KEY_RIGHTCTRL = 97;
public static final int KEY_KPSLASH = 98;
public static final int KEY_SYSRQ = 99;
public static final int KEY_RIGHTALT = 100;
public static final int KEY_LINEFEED = 101;
public static final int KEY_HOME = 102;
public static final int KEY_UP = 103;
public static final int KEY_PAGEUP = 104;
public static final int KEY_LEFT = 105;
public static final int KEY_RIGHT = 106;
public static final int KEY_END = 107;
public static final int KEY_DOWN = 108;
public static final int KEY_PAGEDOWN = 109;
public static final int KEY_INSERT = 110;
public static final int KEY_DELETE = 111;
public static final int KEY_MACRO = 112;
public static final int KEY_MUTE = 113;
public static final int KEY_VOLUMEDOWN = 114;
public static final int KEY_VOLUMEUP = 115;
public static final int KEY_POWER = 116; /* SC System Power Down */
public static final int KEY_KPEQUAL = 117;
public static final int KEY_KPPLUSMINUS = 118;
public static final int KEY_PAUSE = 119;
public static final int KEY_SCALE = 120; /* AL Compiz Scale (Expose) */
public static final int KEY_KPCOMMA = 121;
public static final int KEY_HANGEUL = 122;
public static final int KEY_HANGUEL = KEY_HANGEUL;
public static final int KEY_HANJA = 123;
public static final int KEY_YEN = 124;
public static final int KEY_LEFTMETA = 125;
public static final int KEY_RIGHTMETA = 126;
public static final int KEY_COMPOSE = 127;
public static final int KEY_STOP = 128; /* AC Stop */
public static final int KEY_AGAIN = 129;
public static final int KEY_PROPS = 130; /* AC Properties */
public static final int KEY_UNDO = 131; /* AC Undo */
public static final int KEY_FRONT = 132;
public static final int KEY_COPY = 133; /* AC Copy */
public static final int KEY_OPEN = 134; /* AC Open */
public static final int KEY_PASTE = 135; /* AC Paste */
public static final int KEY_FIND = 136; /* AC Search */
public static final int KEY_CUT = 137; /* AC Cut */
public static final int KEY_HELP = 138; /* AL Integrated Help Center */
public static final int KEY_MENU = 139; /* Menu (show menu) */
public static final int KEY_CALC = 140; /* AL Calculator */
public static final int KEY_SETUP = 141;
public static final int KEY_SLEEP = 142; /* SC System Sleep */
public static final int KEY_WAKEUP = 143; /* System Wake Up */
public static final int KEY_FILE = 144; /* AL Local Machine Browser */
public static final int KEY_SENDFILE = 145;
public static final int KEY_DELETEFILE = 146;
public static final int KEY_XFER = 147;
public static final int KEY_PROG1 = 148;
public static final int KEY_PROG2 = 149;
public static final int KEY_WWW = 150; /* AL Internet Browser */
public static final int KEY_MSDOS = 151;
public static final int KEY_COFFEE = 152; /* AL Terminal Lock/Screensaver */
public static final int KEY_SCREENLOCK = KEY_COFFEE;
public static final int KEY_ROTATE_DISPLAY = 153; /* Display orientation for e.g. tablets */
public static final int KEY_DIRECTION = KEY_ROTATE_DISPLAY;
public static final int KEY_CYCLEWINDOWS = 154;
public static final int KEY_MAIL = 155;
public static final int KEY_BOOKMARKS = 156; /* AC Bookmarks */
public static final int KEY_COMPUTER = 157;
public static final int KEY_BACK = 158; /* AC Back */
public static final int KEY_FORWARD = 159; /* AC Forward */
public static final int KEY_CLOSECD = 160;
public static final int KEY_EJECTCD = 161;
public static final int KEY_EJECTCLOSECD = 162;
public static final int KEY_NEXTSONG = 163;
public static final int KEY_PLAYPAUSE = 164;
public static final int KEY_PREVIOUSSONG = 165;
public static final int KEY_STOPCD = 166;
public static final int KEY_RECORD = 167;
public static final int KEY_REWIND = 168;
public static final int KEY_PHONE = 169; /* Media Select Telephone */
public static final int KEY_ISO = 170;
public static final int KEY_CONFIG = 171; /* AL Consumer Control Configuration */
public static final int KEY_HOMEPAGE = 172; /* AC Home */
public static final int KEY_REFRESH = 173; /* AC Refresh */
public static final int KEY_EXIT = 174; /* AC Exit */
public static final int KEY_MOVE = 175;
public static final int KEY_EDIT = 176;
public static final int KEY_SCROLLUP = 177;
public static final int KEY_SCROLLDOWN = 178;
public static final int KEY_KPLEFTPAREN = 179;
public static final int KEY_KPRIGHTPAREN = 180;
public static final int KEY_NEW = 181; /* AC New */
public static final int KEY_REDO = 182; /* AC Redo/Repeat */
public static final int KEY_F13 = 183;
public static final int KEY_F14 = 184;
public static final int KEY_F15 = 185;
public static final int KEY_F16 = 186;
public static final int KEY_F17 = 187;
public static final int KEY_F18 = 188;
public static final int KEY_F19 = 189;
public static final int KEY_F20 = 190;
public static final int KEY_F21 = 191;
public static final int KEY_F22 = 192;
public static final int KEY_F23 = 193;
public static final int KEY_F24 = 194;
public static final int KEY_PLAYCD = 200;
public static final int KEY_PAUSECD = 201;
public static final int KEY_PROG3 = 202;
public static final int KEY_PROG4 = 203;
public static final int KEY_DASHBOARD = 204; /* AL Dashboard */
public static final int KEY_SUSPEND = 205;
public static final int KEY_CLOSE = 206; /* AC Close */
public static final int KEY_PLAY = 207;
public static final int KEY_FASTFORWARD = 208;
public static final int KEY_BASSBOOST = 209;
public static final int KEY_PRINT = 210; /* AC Print */
public static final int KEY_HP = 211;
public static final int KEY_CAMERA = 212;
public static final int KEY_SOUND = 213;
public static final int KEY_QUESTION = 214;
public static final int KEY_EMAIL = 215;
public static final int KEY_CHAT = 216;
public static final int KEY_SEARCH = 217;
public static final int KEY_CONNECT = 218;
public static final int KEY_FINANCE = 219; /* AL Checkbook/Finance */
public static final int KEY_SPORT = 220;
public static final int KEY_SHOP = 221;
public static final int KEY_ALTERASE = 222;
public static final int KEY_CANCEL = 223; /* AC Cancel */
public static final int KEY_BRIGHTNESSDOWN = 224;
public static final int KEY_BRIGHTNESSUP = 225;
public static final int KEY_MEDIA = 226;
public static final int KEY_SWITCHVIDEOMODE = 227; /* Cycle between available video
outputs (Monitor/LCD/TV-out/etc) */
public static final int KEY_KBDILLUMTOGGLE = 228;
public static final int KEY_KBDILLUMDOWN = 229;
public static final int KEY_KBDILLUMUP = 230;
public static final int KEY_SEND = 231; /* AC Send */
public static final int KEY_REPLY = 232; /* AC Reply */
public static final int KEY_FORWARDMAIL = 233; /* AC Forward Msg */
public static final int KEY_SAVE = 234; /* AC Save */
public static final int KEY_DOCUMENTS = 235;
public static final int KEY_BATTERY = 236;
public static final int KEY_BLUETOOTH = 237;
public static final int KEY_WLAN = 238;
public static final int KEY_UWB = 239;
public static final int KEY_UNKNOWN = 240;
public static final int KEY_VIDEO_NEXT = 241; /* drive next video source */
public static final int KEY_VIDEO_PREV = 242; /* drive previous video source */
public static final int KEY_BRIGHTNESS_CYCLE = 243; /* brightness up, after max is min */
public static final int KEY_BRIGHTNESS_AUTO = 244; /* Set Auto Brightness: manual
brightness control is off,
rely on ambient */
public static final int KEY_BRIGHTNESS_ZERO = KEY_BRIGHTNESS_AUTO;
public static final int KEY_DISPLAY_OFF = 245; /* display device to off state */
public static final int KEY_WWAN = 246; /* Wireless WAN (LTE, UMTS, GSM, etc.) */
public static final int KEY_WIMAX = KEY_WWAN;
public static final int KEY_RFKILL = 247; /* Key that controls all radios */
public static final int KEY_MICMUTE = 248;
public interface KeyListener {
void onKeyDown(String keyName);
void onKeyUp(String keyName);
}
private static final Map<String, Integer> keyNameToCode = new HashMap<>();
private static final SparseArray<String> keyCodeToName = new SparseArray<>();
private KeyListener mKeyListener;
public KeyObserver() {
}
public void setKeyListener(KeyListener keyListener) {
mKeyListener = keyListener;
}
@Override
public void onInputEvent(@NonNull InputEventObserver.InputEvent event) {
if (!event.type.equals("0001")) {
return;
}
if (event.value.equalsIgnoreCase("00000000")) {
notifyKeyUp(keyCodeToKeyName(Integer.parseInt(event.code, 16)));
}
if (event.value.equalsIgnoreCase("00000001")) {
notifyKeyDown(keyCodeToKeyName(Integer.parseInt(event.code, 16)));
}
}
public static String keyCodeToKeyName(int code) {
return keyCodeToName.get(code);
}
public static int keyNameToCode(String name) {
Integer code = keyNameToCode.get(name);
if (code == null)
return -1;
return code;
}
private void notifyKeyDown(String keyName) {
if (mKeyListener != null) {
mKeyListener.onKeyDown(keyName);
}
}
private void notifyKeyUp(String keyName) {
if (mKeyListener != null) {
mKeyListener.onKeyUp(keyName);
}
}
static {
try {
for (Field field : KeyObserver.class.getFields()) {
if (field.getName().startsWith("KEY_")) {
int keyCode = (int) field.get(null);
keyCodeToName.put(keyCode, field.getName());
keyNameToCode.put(field.getName(), keyCode);
}
}
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}