fix: lag when accessibility service switch toggled
This commit is contained in:
@@ -47,7 +47,7 @@ images是图片与图色处理的工具。包括获取图片某点颜色,保
|
||||
* y \<y\> 要获取的像素的纵坐标。
|
||||
|
||||
返回图片image在点(x, y)处的像素的ARGB值。
|
||||
该值的格式为0xAARRGGBB。也就是,如果`var argb = images.pixel(image, x, y)`,那么可以通过`(argb & 0xFF000000) >> 24`获取透明度,通过`(argb & 0xFF0000) >> 16`获取R值,通过`(argb & 0xFF000000) >> 24`获取G值等,或者通过`images.alpha(argb)`, `images.red(argb)`等获取。
|
||||
该值的格式为0xAARRGGBB。也就是,如果`var argb = images.pixel(image, x, y)`,那么可以通过`(argb & 0xFF000000) >> 24`获取透明度,通过`(argb & 0xFF0000) >> 16`获取R值,通过`(argb & 0xFF000000) >> 24`获取G值等,或者通过`colors.alpha(argb)`, `colors.red(argb)`等获取。
|
||||
|
||||
### images.saveImage(image, path)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
### Tap(x, y)
|
||||
点击位置(x, y), 您可以通过"开发者选项"开启指针位置来确定点击坐标。
|
||||
|
||||
### Swipe(x1, y1, x2, y2)
|
||||
### Swipe(x1, y1, x2, y2, \[delay\])
|
||||
滑动。从(x1, y1)位置滑动到(x2, y2)位置。
|
||||
|
||||
### Home()
|
||||
|
||||
@@ -53,7 +53,8 @@ public class AccessibilityServiceTool {
|
||||
"else\n" +
|
||||
"enabled=$pkg:$enabled\n" +
|
||||
"settings put secure enabled_accessibility_services $enabled\n" +
|
||||
"fi";
|
||||
"fi\n" +
|
||||
"settings put secure accessibility_enabled 1";
|
||||
|
||||
public static boolean enableAccessibilityServiceByRoot(Class<? extends android.accessibilityservice.AccessibilityService> accessibilityService) {
|
||||
String serviceName = App.getApp().getPackageName() + "/" + accessibilityService.getName();
|
||||
@@ -62,9 +63,9 @@ public class AccessibilityServiceTool {
|
||||
|
||||
public static boolean enableAccessibilityServiceByRootAndWaitFor(long timeOut) {
|
||||
if (enableAccessibilityServiceByRoot(AccessibilityService.class)) {
|
||||
AccessibilityService.waitForEnabled(timeOut);
|
||||
return AccessibilityService.waitForEnabled(timeOut);
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void enableAccessibilityServiceByRootIfNeeded() {
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.stardust.scriptdroid.ui.common;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.stardust.scriptdroid.R;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/7/31.
|
||||
*/
|
||||
|
||||
public class ProgressDialog {
|
||||
|
||||
private MaterialDialog mDialog;
|
||||
|
||||
public ProgressDialog(Context context) {
|
||||
mDialog = new MaterialDialog.Builder(context)
|
||||
.progress(true, 0)
|
||||
.cancelable(false)
|
||||
.content(R.string.text_on_progress)
|
||||
.show();
|
||||
}
|
||||
|
||||
public void dismiss() {
|
||||
mDialog.dismiss();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,7 @@ import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v7.widget.SwitchCompat;
|
||||
import android.widget.CompoundButton;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.afollestad.materialdialogs.DialogAction;
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
@@ -17,6 +18,7 @@ import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.autojs.AutoJs;
|
||||
import com.stardust.scriptdroid.external.floatingwindow.HoverMenuManger;
|
||||
import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService;
|
||||
import com.stardust.scriptdroid.ui.common.ProgressDialog;
|
||||
import com.stardust.view.accessibility.AccessibilityService;
|
||||
import com.stardust.scriptdroid.sublime.SublimePluginClient;
|
||||
import com.stardust.scriptdroid.sublime.SublimePluginService;
|
||||
@@ -117,7 +119,7 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
|
||||
void setAutoOperateServiceEnable(CompoundButton button, boolean enable) {
|
||||
boolean isAccessibilityServiceEnabled = AccessibilityService.isEnabled(App.getApp());
|
||||
if (enable && !isAccessibilityServiceEnabled) {
|
||||
AccessibilityServiceTool.enableAccessibilityService();
|
||||
enableAccessibilityService();
|
||||
} else if (!enable && isAccessibilityServiceEnabled) {
|
||||
if (!AccessibilityService.disable()) {
|
||||
AccessibilityServiceTool.goToAccessibilitySetting();
|
||||
@@ -125,6 +127,30 @@ public class SideMenuFragment extends android.support.v4.app.Fragment {
|
||||
}
|
||||
}
|
||||
|
||||
private void enableAccessibilityService() {
|
||||
if (!Pref.enableAccessibilityServiceByRoot()) {
|
||||
AccessibilityServiceTool.goToAccessibilitySetting();
|
||||
return;
|
||||
}
|
||||
final ProgressDialog progress = new ProgressDialog(getContext());
|
||||
UnderuseExecutors.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
final boolean succeed = AccessibilityServiceTool.enableAccessibilityServiceByRootAndWaitFor(4000);
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!succeed) {
|
||||
Toast.makeText(getContext(), R.string.text_enable_accessibitliy_service_by_root_failed, Toast.LENGTH_SHORT).show();
|
||||
AccessibilityServiceTool.goToAccessibilitySetting();
|
||||
}
|
||||
progress.dismiss();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@CheckedChange(R.id.sw_floating_window)
|
||||
void setFloatingWindowEnable(CompoundButton button, boolean enable) {
|
||||
if (enable && !HoverMenuManger.isHoverMenuShowing()) {
|
||||
|
||||
@@ -209,6 +209,8 @@
|
||||
<string name="text_discard_record">放弃录制</string>
|
||||
<string name="text_inspect_failed">布局抓取失败,请关闭悬浮窗后动一下页面重试</string>
|
||||
<string name="script_anr">没有相应,要强制停止吗</string>
|
||||
<string name="text_enable_accessibitliy_service_by_root_failed">使用root权限开启失败</string>
|
||||
<string name="text_on_progress">处理中</string>
|
||||
|
||||
|
||||
<string-array name="record_control_keys">
|
||||
|
||||
Reference in New Issue
Block a user