refactor(autojs): move inputevent to package core
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
85
app/src/main/java/com/stardust/widget/PrefSwitch.java
Normal file
85
app/src/main/java/com/stardust/widget/PrefSwitch.java
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user