mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-21 21:01:43 +08:00
add: module device
This commit is contained in:
parent
1413bf21a5
commit
d06171d549
@ -2,8 +2,8 @@
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/Auto.js.iml" filepath="$PROJECT_DIR$/Auto.js.iml" />
|
||||
<module fileurl="file://E:\YiBin\AndroidStudioProjects\NoRootScriptDroid\Auto.js.iml" filepath="E:\YiBin\AndroidStudioProjects\NoRootScriptDroid\Auto.js.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/NoRootScriptDroid.iml" filepath="$PROJECT_DIR$/NoRootScriptDroid.iml" />
|
||||
<module fileurl="file://C:\Users\Stardust\Documents\AndroidProjects\Auto.js\NoRootScriptDroid.iml" filepath="C:\Users\Stardust\Documents\AndroidProjects\Auto.js\NoRootScriptDroid.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/autojs/autojs.iml" filepath="$PROJECT_DIR$/autojs/autojs.iml" />
|
||||
|
||||
@ -98,7 +98,7 @@
|
||||
<activity
|
||||
android:name="com.stardust.autojs.core.image.ScreenCaptureRequestActivity"
|
||||
android:taskAffinity="com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity"
|
||||
android:theme="@style/AppTheme.Transparent"/>
|
||||
android:theme="@android:style/Theme.NoDisplay"/>
|
||||
<activity
|
||||
android:name=".ui.error.IssueReporterActivity"
|
||||
android:theme="@style/IssueReporterTheme"/>
|
||||
|
||||
21
app/src/main/assets/sample/设备与设备信息/获取设备信息.js
Normal file
21
app/src/main/assets/sample/设备与设备信息/获取设备信息.js
Normal file
@ -0,0 +1,21 @@
|
||||
|
||||
console.show();
|
||||
|
||||
var str = "";
|
||||
str += "屏幕宽度:" + device.width;
|
||||
str += "\n屏幕高度:" + device.height;
|
||||
str += "\nbuildId:" + device.buildId;
|
||||
str += "\n主板:" + device.board;
|
||||
str += "\n制造商:" + device.brand;
|
||||
str += "\n型号:" + device.model;
|
||||
str += "\n产品名称:" + device.product;
|
||||
str += "\nbootloader版本:" + device.bootloader;
|
||||
str += "\n硬件名称:" + device.hardware;
|
||||
str += "\n唯一标识码:" + device.fingerprint;
|
||||
str += "\nIMEI: " + device.getIMEI();
|
||||
str += "\nAndroidId: " + device.getAndroidId();
|
||||
str += "\nMac: " + device.getMacAddress();
|
||||
str += "\nAPI: " + device.sdkInt;
|
||||
str += "\n电量: " + device.getBattery();
|
||||
|
||||
log(str);
|
||||
24
app/src/main/assets/sample/设备与设备信息/调整设备亮度.js
Normal file
24
app/src/main/assets/sample/设备与设备信息/调整设备亮度.js
Normal file
@ -0,0 +1,24 @@
|
||||
"ui";
|
||||
|
||||
ui.layout(
|
||||
<vertical padding="16">
|
||||
<checkbox id="auto" text="自动亮度"/>
|
||||
<text textColor="black" textSize="16sp" margin="8">亮度</text>
|
||||
<seekbar id="brightness" max="100"/>
|
||||
</vertical>
|
||||
);
|
||||
|
||||
//getBrightnessMode()返回亮度模式,1为自动亮度
|
||||
ui.auto.setChecked(device.getBrightnessMode());
|
||||
ui.auto.setOnCheckedChangeListener(function(v, checked){
|
||||
device.setBrightnessMode(checked ? 1: 0);
|
||||
});
|
||||
|
||||
ui.brightness.setProgress(device.getBrightness());
|
||||
ui.brightness.setOnSeekBarChangeListener({
|
||||
onProgressChanged: function(seekbar, p, fromUser){
|
||||
if(fromUser){
|
||||
device.setBrightness(p);
|
||||
}
|
||||
}
|
||||
});
|
||||
44
app/src/main/assets/sample/设备与设备信息/调整设备音量.js
Normal file
44
app/src/main/assets/sample/设备与设备信息/调整设备音量.js
Normal file
@ -0,0 +1,44 @@
|
||||
"ui";
|
||||
|
||||
ui.layout(
|
||||
<vertical padding="16">
|
||||
<text textColor="black" textSize="16sp">媒体音量</text>
|
||||
<seekbar id="music"/>
|
||||
|
||||
<text textColor="black" textSize="16sp">通知音量</text>
|
||||
<seekbar id="notification"/>
|
||||
|
||||
<text textColor="black" textSize="16sp">闹钟音量</text>
|
||||
<seekbar id="alarm"/>
|
||||
</vertical>
|
||||
);
|
||||
|
||||
ui.music.setMax(device.getMusicMaxVolume());
|
||||
ui.music.setProgress(device.getMusicVolume());
|
||||
ui.music.setOnSeekBarChangeListener({
|
||||
onProgressChanged: function(seekbar, p, fromUser){
|
||||
if(fromUser){
|
||||
device.setMusicVolume(p);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ui.notification.setMax(device.getNotificationMaxVolume());
|
||||
ui.notification.setProgress(device.getAlarmVolume());
|
||||
ui.notification.setOnSeekBarChangeListener({
|
||||
onProgressChanged: function(seekbar, p, fromUser){
|
||||
if(fromUser){
|
||||
device.setNotificationVolume(p);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
ui.alarm.setMax(device.getAlarmMaxVolume());
|
||||
ui.alarm.setProgress(device.getAlarmVolume());
|
||||
ui.alarm.setOnSeekBarChangeListener({
|
||||
onProgressChanged: function(seekbar, p, fromUser){
|
||||
if(fromUser){
|
||||
device.setAlarmVolume(p);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -9,6 +9,7 @@ import android.support.annotation.RequiresApi;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.support.v7.widget.Toolbar;
|
||||
import android.view.View;
|
||||
import android.widget.SeekBar;
|
||||
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.network.VersionService;
|
||||
@ -26,7 +27,7 @@ import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||||
* Created by Stardust on 2017/1/23.
|
||||
*/
|
||||
|
||||
public abstract class BaseActivity extends AppCompatActivity {
|
||||
public abstract class BaseActivity extends AppCompatActivity {
|
||||
|
||||
|
||||
protected static final int PERMISSION_REQUEST_CODE = 11186;
|
||||
|
||||
@ -3,13 +3,16 @@
|
||||
package="com.stardust.autojs"
|
||||
>
|
||||
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
|
||||
|
||||
<application
|
||||
>
|
||||
<activity
|
||||
android:name=".execution.ScriptExecuteActivity"
|
||||
android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
|
||||
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
||||
@ -49,6 +49,7 @@ var __that__ = this;
|
||||
var Promise = require('promise.js');
|
||||
var JSON = require('__json2__.js');
|
||||
var util = require('__util__.js');
|
||||
var device = __runtime__.device;
|
||||
|
||||
var __asGlobal__ = function(obj, functions){
|
||||
var len = functions.length;
|
||||
|
||||
@ -13,6 +13,7 @@ import com.stardust.autojs.rhino.AndroidClassLoader;
|
||||
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.Device;
|
||||
import com.stardust.autojs.runtime.api.Engines;
|
||||
import com.stardust.autojs.runtime.api.Events;
|
||||
import com.stardust.autojs.runtime.api.Loopers;
|
||||
@ -140,6 +141,9 @@ public class ScriptRuntime {
|
||||
@ScriptVariable
|
||||
public Timers timers;
|
||||
|
||||
@ScriptVariable
|
||||
public Device device;
|
||||
|
||||
@ScriptVariable
|
||||
public final AccessibilityBridge accessibilityBridge;
|
||||
|
||||
@ -172,6 +176,7 @@ public class ScriptRuntime {
|
||||
}
|
||||
engines = new Engines(builder.mEngineService);
|
||||
dialogs = new Dialogs(app, mUiHandler, bridges);
|
||||
device = new Device(mUiHandler.getContext());
|
||||
}
|
||||
|
||||
public void init() {
|
||||
|
||||
287
autojs/src/main/java/com/stardust/autojs/runtime/api/Device.java
Normal file
287
autojs/src/main/java/com/stardust/autojs/runtime/api/Device.java
Normal file
@ -0,0 +1,287 @@
|
||||
package com.stardust.autojs.runtime.api;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.AlarmManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.media.AudioManager;
|
||||
import android.net.wifi.WifiInfo;
|
||||
import android.net.wifi.WifiManager;
|
||||
import android.os.BatteryManager;
|
||||
import android.os.Build;
|
||||
import android.provider.Settings;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.telephony.TelephonyManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.autojs.R;
|
||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||
import com.stardust.pio.PFile;
|
||||
import com.stardust.pio.PFiles;
|
||||
import com.stardust.pio.UncheckedIOException;
|
||||
import com.stardust.util.IntentUtil;
|
||||
import com.stardust.util.ScreenMetrics;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import ezy.assist.compat.SettingsCompat;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/12/2.
|
||||
*/
|
||||
|
||||
public class Device {
|
||||
|
||||
public static final int width = ScreenMetrics.getDeviceScreenWidth();
|
||||
|
||||
public static final int height = ScreenMetrics.getDeviceScreenHeight();
|
||||
|
||||
public static final String buildId = Build.ID;
|
||||
|
||||
public static final String buildDisplay = Build.DISPLAY;
|
||||
|
||||
public static final String product = Build.PRODUCT;
|
||||
|
||||
public static final String device = Build.DEVICE;
|
||||
|
||||
public static final String board = Build.BOARD;
|
||||
|
||||
public static final String brand = Build.BRAND;
|
||||
|
||||
public static final String model = Build.MODEL;
|
||||
|
||||
public static final String bootloader = Build.BOOTLOADER;
|
||||
|
||||
public static final String hardware = Build.HARDWARE;
|
||||
|
||||
public static final String fingerprint = Build.FINGERPRINT;
|
||||
|
||||
public static final int sdkInt = Build.VERSION.SDK_INT;
|
||||
|
||||
@SuppressLint("HardwareIds")
|
||||
public static final String serial = Build.SERIAL;
|
||||
|
||||
private Context mContext;
|
||||
|
||||
public Device(Context context) {
|
||||
mContext = context;
|
||||
}
|
||||
|
||||
@SuppressLint("HardwareIds")
|
||||
@Nullable
|
||||
public String getIMEI() {
|
||||
try {
|
||||
return ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId();
|
||||
} catch (SecurityException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("HardwareIds")
|
||||
public String getAndroidId() {
|
||||
return Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.ANDROID_ID);
|
||||
}
|
||||
|
||||
public int getBrightness() throws Settings.SettingNotFoundException {
|
||||
return Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
|
||||
}
|
||||
|
||||
public int getBrightnessMode() throws Settings.SettingNotFoundException {
|
||||
return Settings.System.getInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE);
|
||||
}
|
||||
|
||||
public void setBrightness(int b) throws Settings.SettingNotFoundException {
|
||||
checkWriteSettingsPermission();
|
||||
Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, b);
|
||||
}
|
||||
|
||||
public void setBrightnessMode(int b) throws Settings.SettingNotFoundException {
|
||||
checkWriteSettingsPermission();
|
||||
Settings.System.putInt(mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_MODE, b);
|
||||
}
|
||||
|
||||
public int getMusicVolume() {
|
||||
return ((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.getStreamVolume(AudioManager.STREAM_MUSIC);
|
||||
}
|
||||
|
||||
public int getNotificationVolume() {
|
||||
return ((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.getStreamVolume(AudioManager.STREAM_NOTIFICATION);
|
||||
}
|
||||
|
||||
public int getAlarmVolume() {
|
||||
return ((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.getStreamVolume(AudioManager.STREAM_ALARM);
|
||||
}
|
||||
|
||||
public int getMusicMaxVolume() {
|
||||
return ((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
|
||||
}
|
||||
|
||||
public int getNotificationMaxVolume() {
|
||||
return ((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.getStreamMaxVolume(AudioManager.STREAM_NOTIFICATION);
|
||||
}
|
||||
|
||||
public int getAlarmMaxVolume() {
|
||||
return ((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.getStreamMaxVolume(AudioManager.STREAM_ALARM);
|
||||
}
|
||||
|
||||
public void setMusicVolume(int i) {
|
||||
checkWriteSettingsPermission();
|
||||
((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.setStreamVolume(AudioManager.STREAM_MUSIC, i, 0);
|
||||
}
|
||||
|
||||
public void setAlarmVolume(int i) {
|
||||
checkWriteSettingsPermission();
|
||||
((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.setStreamVolume(AudioManager.STREAM_ALARM, i, 0);
|
||||
}
|
||||
|
||||
public void setNotificationVolume(int i) {
|
||||
checkWriteSettingsPermission();
|
||||
((AudioManager) getSystemService(Context.AUDIO_SERVICE))
|
||||
.setStreamVolume(AudioManager.STREAM_NOTIFICATION, i, 0);
|
||||
}
|
||||
|
||||
public float getBattery() {
|
||||
Intent batteryIntent = mContext.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
if (batteryIntent == null) {
|
||||
return -1;
|
||||
}
|
||||
int level = batteryIntent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
|
||||
int scale = batteryIntent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
|
||||
float battery = ((float) level / scale) * 100.0f;
|
||||
return Math.round(battery * 10) / 10;
|
||||
}
|
||||
|
||||
public boolean isCharging() {
|
||||
Intent intent = mContext.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
|
||||
if (intent == null) {
|
||||
throw new ScriptException("Cannot retrieve the battery state");
|
||||
}
|
||||
int plugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
|
||||
return plugged == BatteryManager.BATTERY_PLUGGED_AC || plugged == BatteryManager.BATTERY_PLUGGED_USB;
|
||||
}
|
||||
|
||||
private void checkWriteSettingsPermission() {
|
||||
if (SettingsCompat.canWriteSettings(mContext)) {
|
||||
return;
|
||||
}
|
||||
SettingsCompat.manageWriteSettings(mContext);
|
||||
throw new SecurityException(mContext.getString(R.string.no_write_settings_permissin));
|
||||
}
|
||||
|
||||
|
||||
// just to avoid warning of null pointer to make android studio happy..
|
||||
@NonNull
|
||||
@SuppressWarnings("unchecked")
|
||||
private <T> T getSystemService(String service) {
|
||||
Object systemService = mContext.getSystemService(service);
|
||||
if (systemService == null) {
|
||||
throw new RuntimeException("should never happen..." + service);
|
||||
}
|
||||
return (T) systemService;
|
||||
}
|
||||
|
||||
private static final String FAKE_MAC_ADDRESS = "02:00:00:00:00:00";
|
||||
|
||||
@SuppressLint("HardwareIds")
|
||||
public String getMacAddress() throws Exception {
|
||||
WifiManager wifiMan = (WifiManager) mContext.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
|
||||
if (wifiMan == null) {
|
||||
return null;
|
||||
}
|
||||
WifiInfo wifiInf = wifiMan.getConnectionInfo();
|
||||
if (wifiInf == null) {
|
||||
return getMacByFile();
|
||||
}
|
||||
|
||||
String mac = wifiInf.getMacAddress();
|
||||
if (FAKE_MAC_ADDRESS.equals(mac)) {
|
||||
mac = null;
|
||||
}
|
||||
if (mac == null) {
|
||||
mac = getMacByInterface();
|
||||
if (mac == null) {
|
||||
mac = getMacByFile();
|
||||
}
|
||||
}
|
||||
return mac;
|
||||
}
|
||||
|
||||
private static String getMacByInterface() throws SocketException {
|
||||
List<NetworkInterface> networkInterfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
|
||||
for (NetworkInterface networkInterface : networkInterfaces) {
|
||||
if (networkInterface.getName().equalsIgnoreCase("wlan0")) {
|
||||
byte[] macBytes = networkInterface.getHardwareAddress();
|
||||
if (macBytes == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
StringBuilder mac = new StringBuilder();
|
||||
for (byte b : macBytes) {
|
||||
mac.append(String.format("%02X:", b));
|
||||
}
|
||||
|
||||
if (mac.length() > 0) {
|
||||
mac.deleteCharAt(mac.length() - 1);
|
||||
}
|
||||
return mac.toString();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private static String getMacByFile() throws Exception {
|
||||
try {
|
||||
return PFiles.read("/sys/class/net/wlan0/address");
|
||||
} catch (UncheckedIOException e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Device{" +
|
||||
"width=" + width +
|
||||
", height=" + height +
|
||||
", buildId='" + buildId + '\'' +
|
||||
", buildDisplay='" + buildDisplay + '\'' +
|
||||
", product='" + product + '\'' +
|
||||
", device='" + device + '\'' +
|
||||
", board='" + board + '\'' +
|
||||
", brand='" + brand + '\'' +
|
||||
", model='" + model + '\'' +
|
||||
", bootloader='" + bootloader + '\'' +
|
||||
", hardware='" + hardware + '\'' +
|
||||
", fingerprint='" + fingerprint + '\'' +
|
||||
", serial='" + serial + '\'' +
|
||||
", sdkInt='" + sdkInt + '\'' +
|
||||
'}';
|
||||
}
|
||||
|
||||
}
|
||||
@ -15,6 +15,7 @@
|
||||
<string name="text_accessibility_service_description">使脚本自动操作(点击、长按、滑动等)所需,若关闭则只能执行不涉及自动操作的脚本。</string>
|
||||
<string name="_app_name">AutoJs</string>
|
||||
<string name="text_should_enable_key_observing">按键监听未启用,请在软件设置中开启</string>
|
||||
<string name="no_write_settings_permissin">沒有修改系統设置权限</string>
|
||||
|
||||
|
||||
</resources>
|
||||
|
||||
@ -56,7 +56,7 @@ public class IntentExtras implements Serializable {
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T getAndClear(String key) {
|
||||
T value = (T) mMap.get(key);
|
||||
clear();
|
||||
recycle();
|
||||
return value;
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ public class IntentExtras implements Serializable {
|
||||
return intent;
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
public void recycle() {
|
||||
extraStore.remove(mId);
|
||||
mMap = null;
|
||||
}
|
||||
|
||||
@ -1,48 +1,15 @@
|
||||
package com.stardust.auojs.inrt.rt;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.CompoundButton;
|
||||
|
||||
import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.app.SimpleActivityLifecycleCallbacks;
|
||||
import com.stardust.auojs.inrt.App;
|
||||
import com.stardust.auojs.inrt.R;
|
||||
import com.stardust.autojs.ScriptEngineService;
|
||||
import com.stardust.autojs.ScriptEngineServiceBuilder;
|
||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
||||
import com.stardust.autojs.core.console.GlobalStardustConsole;
|
||||
import com.stardust.autojs.core.inputevent.InputEventObserver;
|
||||
import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
|
||||
import com.stardust.autojs.engine.LoopBasedJavaScriptEngine;
|
||||
import com.stardust.autojs.engine.RootAutomatorEngine;
|
||||
import com.stardust.autojs.engine.ScriptEngine;
|
||||
import com.stardust.autojs.engine.ScriptEngineManager;
|
||||
import com.stardust.autojs.runtime.ScriptRuntime;
|
||||
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||
import com.stardust.autojs.runtime.api.AppUtils;
|
||||
import com.stardust.autojs.core.util.Shell;
|
||||
import com.stardust.autojs.core.image.ScreenCaptureRequestActivity;
|
||||
import com.stardust.autojs.core.image.ScreenCaptureRequester;
|
||||
import com.stardust.autojs.core.console.StardustConsole;
|
||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||
import com.stardust.autojs.script.AutoFileSource;
|
||||
import com.stardust.autojs.script.JavaScriptSource;
|
||||
import com.stardust.util.ScreenMetrics;
|
||||
import com.stardust.util.Supplier;
|
||||
import com.stardust.util.UiHandler;
|
||||
import com.stardust.view.accessibility.AccessibilityInfoProvider;
|
||||
import com.stardust.view.accessibility.AccessibilityNotificationObserver;
|
||||
import com.stardust.view.accessibility.AccessibilityService;
|
||||
import com.stardust.view.accessibility.AccessibilityServiceUtils;
|
||||
import com.stardust.view.accessibility.NotificationListener;
|
||||
|
||||
import org.opencv.android.BaseLoaderCallback;
|
||||
import org.opencv.android.OpenCVLoader;
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user