Skip to content

Commit 426760b

Browse files
committed
refactoring
1 parent d9efa5a commit 426760b

File tree

1 file changed

+45
-45
lines changed

1 file changed

+45
-45
lines changed

app/src/main/java/com/zfdang/touchhelper/TouchHelperServiceImpl.java

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ public class TouchHelperServiceImpl {
6262
private ScheduledExecutorService executorService;
6363
private ScheduledFuture futureExpireSkipAdProcess;
6464

65-
private boolean b_method_by_activity_position, b_method_by_activity_widget, b_method_by_button_keyword;
65+
private boolean skipad_by_activity_position, skipad_by_activity_widget, skipad_by_keyword;
6666
private PackageManager packageManager;
6767
private String currentPackageName, currentActivityName;
6868
private String packageName;
@@ -72,8 +72,7 @@ public class TouchHelperServiceImpl {
7272

7373
private Map<String, PackagePositionDescription> mapPackagePositions;
7474
private Map<String, Set<PackageWidgetDescription>> mapPackageWidgets;
75-
private Set<PackageWidgetDescription> setWidgets;
76-
private PackagePositionDescription packagePositionDescription;
75+
private Set<PackageWidgetDescription> setTargetedWidgets;
7776

7877
// try to click 5 times, first click after 300ms, and delayed for 500ms for future clicks
7978
static final int PackagePositionClickFirstDelay = 300;
@@ -297,11 +296,11 @@ public void onAccessibilityEvent(AccessibilityEvent event) {
297296
// now to take different methods to skip ads
298297

299298
// first method is to skip ads by position in activity
300-
if (b_method_by_activity_position) {
299+
if (skipad_by_activity_position) {
301300
// run this method for once only
302-
b_method_by_activity_position = false;
301+
skipad_by_activity_position = false;
303302

304-
packagePositionDescription = mapPackagePositions.get(currentPackageName);
303+
PackagePositionDescription packagePositionDescription = mapPackagePositions.get(currentPackageName);
305304
if (packagePositionDescription != null) {
306305
ShowToastInIntentService("正在根据位置跳过广告...");
307306

@@ -325,36 +324,38 @@ public void run() {
325324
}
326325
}
327326

328-
if (b_method_by_activity_widget) {
327+
// second: skip ads by widget
328+
if (skipad_by_activity_widget) {
329329
// Log.d(TAG, "method by widget in STATE_CHANGED");
330-
setWidgets = mapPackageWidgets.get(currentPackageName);
331-
if(setWidgets != null) {
330+
// run this once, and find targeted widgets for this package
331+
skipad_by_activity_widget = false;
332+
setTargetedWidgets = mapPackageWidgets.get(currentPackageName);
333+
}
334+
if(setTargetedWidgets != null) {
332335
// Log.d(TAG, "Find skip-ad by widget, simulate click ");
333-
findSkipButtonByWidget(service.getRootInActiveWindow(), setWidgets);
334-
} else {
335-
// no customized widget for this package, don't try this method again
336-
b_method_by_activity_widget = false;
337-
}
336+
// this code could be run multiple times
337+
skipAdByTargetedWidget(service.getRootInActiveWindow(), setTargetedWidgets);
338338
}
339339

340-
if (b_method_by_button_keyword) {
340+
if (skipad_by_keyword) {
341341
// Log.d(TAG, "method by keywords in STATE_CHANGED");
342-
findSkipButtonByTextOrDescription(service.getRootInActiveWindow());
342+
// this code could be run multiple times
343+
skipAdByKeywords(service.getRootInActiveWindow());
343344
}
344345
break;
345346
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED:
346347
if(!setPackages.contains(tempPkgName)) {
347348
break;
348349
}
349350

350-
if (b_method_by_activity_widget && setWidgets != null) {
351+
if (setTargetedWidgets != null) {
351352
// Log.d(TAG, "method by widget in CONTENT_CHANGED");
352-
findSkipButtonByWidget(event.getSource(), setWidgets);
353+
skipAdByTargetedWidget(event.getSource(), setTargetedWidgets);
353354
}
354355

355-
if (b_method_by_button_keyword) {
356+
if (skipad_by_keyword) {
356357
// Log.d(TAG, "method by keywords in CONTENT_CHANGED");
357-
findSkipButtonByTextOrDescription(event.getSource());
358+
skipAdByKeywords(event.getSource());
358359
}
359360
break;
360361
// case AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED:
@@ -378,8 +379,8 @@ public void onUnbind(Intent intent) {
378379
/**
379380
* 查找并点击包含keyword控件,目标包括Text和Description
380381
* * */
381-
private void findSkipButtonByTextOrDescription(AccessibilityNodeInfo root) {
382-
// Log.d(TAG, "findSkipButtonByTextOrDescription triggered: " + Utilities.describeAccessibilityNode(root));
382+
private void skipAdByKeywords(AccessibilityNodeInfo root) {
383+
// Log.d(TAG, "skipAdByKeywords triggered: " + Utilities.describeAccessibilityNode(root));
383384

384385
ArrayList<AccessibilityNodeInfo> listA = new ArrayList<>();
385386
ArrayList<AccessibilityNodeInfo> listB = new ArrayList<>();
@@ -430,8 +431,6 @@ private void findSkipButtonByTextOrDescription(AccessibilityNodeInfo root) {
430431
// is it possible that there are more nodes to click and this node does not work?
431432
// don't stop looking for more nodes
432433
// break;
433-
} else {
434-
// Log.d(TAG, "Clicked already:" + nodeDesc);
435434
}
436435
}
437436

@@ -455,14 +454,15 @@ private void findSkipButtonByTextOrDescription(AccessibilityNodeInfo root) {
455454
/**
456455
* 查找并点击由 ActivityWidgetDescription 定义的控件
457456
*/
458-
private void findSkipButtonByWidget(AccessibilityNodeInfo root, Set<PackageWidgetDescription> set) {
459-
int a = 0;
460-
int b = 1;
457+
private void skipAdByTargetedWidget(AccessibilityNodeInfo root, Set<PackageWidgetDescription> set) {
461458
ArrayList<AccessibilityNodeInfo> listA = new ArrayList<>();
462-
ArrayList<AccessibilityNodeInfo> listB = new ArrayList<>();
463459
listA.add(root);
464-
while (a < b) {
465-
AccessibilityNodeInfo node = listA.get(a++);
460+
ArrayList<AccessibilityNodeInfo> listB = new ArrayList<>();
461+
462+
int length = listA.size();
463+
int index = 0;
464+
while (index < length) {
465+
AccessibilityNodeInfo node = listA.get(index++);
466466
if (node != null) {
467467
Rect temRect = new Rect();
468468
node.getBoundsInScreen(temRect);
@@ -485,6 +485,7 @@ private void findSkipButtonByWidget(AccessibilityNodeInfo root, Set<PackageWidge
485485
// Log.d(TAG, "Find skip-ad by Widget " + e.toString());
486486
String nodeDesc = Utilities.describeAccessibilityNode(node);
487487
if(!clickedWidgets.contains(nodeDesc)) {
488+
// add this widget to clicked widget, avoid multiple click on the same widget
488489
clickedWidgets.add(nodeDesc);
489490

490491
ShowToastInIntentService("正在根据控件跳过广告...");
@@ -497,7 +498,8 @@ private void findSkipButtonByWidget(AccessibilityNodeInfo root, Set<PackageWidge
497498
}
498499
}
499500
}
500-
setWidgets = null;
501+
// clear setWidgets, stop trying
502+
setTargetedWidgets = null;
501503
return;
502504
}
503505
}
@@ -507,9 +509,9 @@ private void findSkipButtonByWidget(AccessibilityNodeInfo root, Set<PackageWidge
507509
}
508510
node.recycle();
509511
}
510-
if (a == b) {
511-
a = 0;
512-
b = listB.size();
512+
if (index == length) {
513+
index = 0;
514+
length = listB.size();
513515
listA = listB;
514516
listB = new ArrayList<>();
515517
}
@@ -561,14 +563,13 @@ private boolean click(int X, int Y, long start_time, long duration) {
561563
*/
562564
private void startSkipAdProcess() {
563565
// Log.d(TAG, "Start Skip-ad process");
564-
b_method_by_activity_position = true;
565-
b_method_by_activity_widget = true;
566-
b_method_by_button_keyword = true;
567-
setWidgets = null;
568-
packagePositionDescription = null;
566+
skipad_by_activity_position = true;
567+
skipad_by_activity_widget = true;
568+
skipad_by_keyword = true;
569+
setTargetedWidgets = null;
569570
clickedWidgets.clear();
570571

571-
// cancel all methods 4 seconds later
572+
// cancel all methods N seconds later
572573
if( !futureExpireSkipAdProcess.isCancelled() && !futureExpireSkipAdProcess.isDone()) {
573574
futureExpireSkipAdProcess.cancel(true);
574575
}
@@ -595,11 +596,10 @@ private void stopSkipAdProcess() {
595596
* stop the skip-ad process, without cancel scheduled task
596597
*/
597598
private void stopSkipAdProcessInner() {
598-
b_method_by_activity_position = false;
599-
b_method_by_activity_widget = false;
600-
b_method_by_button_keyword = false;
601-
setWidgets = null;
602-
packagePositionDescription = null;
599+
skipad_by_activity_position = false;
600+
skipad_by_activity_widget = false;
601+
skipad_by_keyword = false;
602+
setTargetedWidgets = null;
603603
}
604604

605605
/**

0 commit comments

Comments
 (0)