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

View File

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

View File

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

View File

@@ -12,18 +12,17 @@ import com.stardust.app.SimpleActivityLifecycleCallbacks;
import com.stardust.autojs.ScriptEngineService;
import com.stardust.autojs.ScriptEngineServiceBuilder;
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine;
import com.stardust.autojs.engine.RhinoJavaScriptEngine;
import com.stardust.autojs.engine.RootAutomatorEngine;
import com.stardust.autojs.engine.ScriptEngine;
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.ScriptException;
import com.stardust.autojs.runtime.exception.ScriptException;
import com.stardust.autojs.runtime.api.AbstractShell;
import com.stardust.autojs.runtime.api.AppUtils;
import com.stardust.autojs.runtime.api.Console;
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.JavaScriptSource;
import com.stardust.scriptdroid.App;
@@ -36,7 +35,7 @@ import com.stardust.util.ScreenMetrics;
import com.stardust.util.Supplier;
import com.stardust.util.UiHandler;
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.scriptdroid.tool.AccessibilityServiceTool;
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;
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
@@ -16,11 +14,11 @@ import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.app.DialogUtils;
import com.stardust.autojs.runtime.record.Recorder;
import com.stardust.autojs.runtime.record.accessibility.AccessibilityActionRecorder;
import com.stardust.autojs.runtime.record.inputevent.InputEventObserver;
import com.stardust.autojs.runtime.record.inputevent.KeyObserver;
import com.stardust.autojs.runtime.record.inputevent.TouchRecorder;
import com.stardust.autojs.core.record.Recorder;
import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
import com.stardust.autojs.core.inputevent.InputEventObserver;
import com.stardust.autojs.core.inputevent.ShellKeyObserver;
import com.stardust.autojs.core.record.inputevent.TouchRecorder;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
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.external.floatingwindow.menu.HoverMenuService;
import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.ClipboardUtil;
import com.stardust.util.MessageEvent;
@@ -43,14 +40,12 @@ import butterknife.OnClick;
import io.mattcarroll.hover.Navigator;
import io.mattcarroll.hover.NavigatorContent;
import static android.content.Context.CLIPBOARD_SERVICE;
/**
* 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;
@BindView(R.id.sw_recorded_by_root)
@@ -76,7 +71,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
private TouchRecorder mTouchRecorder;
private Context mContext;
private boolean mDiscard = false;
private KeyObserver mKeyObserver;
private ShellKeyObserver mKeyObserver;
private InputEventObserver mInputEventObserver = InputEventObserver.getGlobal();
private OnKeyListener mVolumeKeyListener = new OnKeyListener() {
@Override
@@ -101,7 +96,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
AccessibilityService.getStickOnKeyObserver().addListener(mVolumeKeyListener);
mTouchRecorder = TouchRecorder.getGlobal(context);
if (Pref.hasRecordTrigger()) {
mKeyObserver = new KeyObserver();
mKeyObserver = new ShellKeyObserver();
mInputEventObserver.addListener(mKeyObserver);
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.ScriptExecutionListener;
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.StringScriptSource;
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:padding="16dp">
<android.support.v7.widget.SwitchCompat
<com.stardust.widget.PrefSwitch
android:id="@+id/sw_recorded_by_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
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
android:layout_width="wrap_content"

View File

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

View File

@@ -216,6 +216,7 @@
<string name="text_edit_script">编辑脚本</string>
<string name="text_run_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">
@@ -235,11 +236,13 @@
<string-array name="ad_showing_mode_keys">
<item>默认</item>
<item>每天显示一次</item>
<item>关闭广告(╥﹏╥)</item>
</string-array>
<string-array name="ad_showing_mode_values">
<item>Default</item>
<item>OncePerDay</item>
<item>Off</item>
</string-array>
</resources>

View File

@@ -1,32 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<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
android:defaultValue="false"
android:key="@string/key_use_volume_control_record"
android:summary="@string/summary_use_volume_control_record"
android:title="@string/text_use_volume_control_record"/>
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_record_with_root">
<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_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.ThemeColorSwitchPreference
android:defaultValue="false"
android:key="@string/key_record_with_root"
android:title="@string/text_record_with_root"/>
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_running">