From f221b9aeac712e9297c6d5755accc6b68463ccbc Mon Sep 17 00:00:00 2001 From: TonyJiangWJ Date: Sun, 13 Aug 2023 19:43:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=82=AC=E6=B5=AE=E7=AA=97?= =?UTF-8?q?=E4=B8=AD=E6=97=A0=E6=B3=95=E6=AD=A3=E7=A1=AE=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E5=8C=85=E5=90=8D=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../autojs/ui/floating/CircularMenu.java | 1 + .../com/baidu/paddle/lite/ocr/Predictor.java | 6 ++-- .../core/activity/ActivityInfoProvider.kt | 32 +++++++++++-------- build.gradle | 4 +-- gradle.properties | 7 +--- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java b/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java index e79e9e98..3e9991c9 100644 --- a/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java +++ b/app/src/main/java/org/autojs/autojs/ui/floating/CircularMenu.java @@ -261,6 +261,7 @@ public class CircularMenu implements Recorder.OnStateChangedListener, LayoutInsp @OnClick(R.id.settings) void settings() { mWindow.collapse(); + AutoJs.getInstance().getInfoProvider().getPackageAndActivityInfoByA11y(); mRunningPackage = AutoJs.getInstance().getInfoProvider().getLatestPackageByUsageStatsIfGranted(); mRunningActivity = AutoJs.getInstance().getInfoProvider().getLatestActivity(); mSettingsDialog = new OperationDialogBuilder(mContext) diff --git a/autojs-aar/paddleocr/src/main/java/com/baidu/paddle/lite/ocr/Predictor.java b/autojs-aar/paddleocr/src/main/java/com/baidu/paddle/lite/ocr/Predictor.java index 15f9f7cb..99ee4d62 100644 --- a/autojs-aar/paddleocr/src/main/java/com/baidu/paddle/lite/ocr/Predictor.java +++ b/autojs-aar/paddleocr/src/main/java/com/baidu/paddle/lite/ocr/Predictor.java @@ -14,7 +14,6 @@ import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; -import java.util.Vector; public class Predictor { private static final String TAG = Predictor.class.getSimpleName(); @@ -28,7 +27,7 @@ public class Predictor { protected OCRPredictorNative paddlePredictor = null; protected float inferenceTime = 0; // Only for object detection - protected Vector wordLabels = new Vector<>(); + protected List wordLabels = new ArrayList<>(); protected int detLongSize = 960; public float scoreThreshold = 0.1f; protected Bitmap inputImage = null; @@ -214,7 +213,8 @@ public class Predictor { } assetsInputStream.close(); String words = new String(lines); - String[] contents = words.split("\n"); + // Windows下换行为\r\n 进行兼容 + String[] contents = words.split("(\r)?\n"); wordLabels.addAll(Arrays.asList(contents)); wordLabels.add(" "); Log.i(TAG, "Word label size: " + wordLabels.size()); diff --git a/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt b/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt index 2376f443..a2ee1eb6 100644 --- a/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt +++ b/autojs/src/main/java/com/stardust/autojs/core/activity/ActivityInfoProvider.kt @@ -7,7 +7,6 @@ import android.content.ComponentName import android.content.Context import android.content.pm.PackageManager import android.os.Build -import android.os.SystemClock import android.util.Log import android.view.accessibility.AccessibilityEvent import android.view.accessibility.AccessibilityWindowInfo @@ -16,6 +15,7 @@ import com.stardust.app.isOpPermissionGranted import com.stardust.autojs.core.util.Shell import com.stardust.autojs.engine.ScriptEngineManager import com.stardust.view.accessibility.AccessibilityDelegate +import com.stardust.view.accessibility.AccessibilityService.Companion.instance import java.util.regex.Pattern /** @@ -38,6 +38,8 @@ class ActivityInfoProvider(private val context: Context, private val scriptEngin private val checkedPackage: Set = HashSet() private val existsPackage: Set = HashSet() + private val windowIdActivityMap: HashMap = HashMap() + val latestPackage: String get() { val compFromShell = mLatestComponentFromShell @@ -81,21 +83,23 @@ class ActivityInfoProvider(private val context: Context, private val scriptEngin get() = AccessibilityDelegate.ALL_EVENT_TYPES override fun onAccessibilityEvent(service: AccessibilityService, event: AccessibilityEvent): Boolean { - if (event.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { - if (scriptEngineManager.engines.size == 0) { - return false - } - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - val start: Long = System.currentTimeMillis() - val window = service.getWindow(event.windowId) - Log.d(LOG_TAG, "get window cost: " + (System.currentTimeMillis() - start) + "ms") - if (window?.isFocused != false) { - setLatestComponent(event.packageName, event.className) - return false + if (event.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED + && event.className != null) { + windowIdActivityMap[event.windowId] = event.className as String + } + return false + } + + fun getPackageAndActivityInfoByA11y() { + val start: Long = System.currentTimeMillis() + instance?.windows?.forEach { window -> + run { + if (window?.isFocused != false && window?.root != null) { + setLatestComponent(window.root.packageName, windowIdActivityMap[window.id]) } } } - return false + Log.d(LOG_TAG, "get window cost: " + (System.currentTimeMillis() - start) + "ms") } fun getLatestPackageByUsageStatsIfGranted(): String { @@ -112,7 +116,7 @@ class ActivityInfoProvider(private val context: Context, private val scriptEngin return } val latestPackage = matcher.group(1) - if (latestPackage.contains(":")) { + if (latestPackage == null || latestPackage.contains(":")) { return } val latestActivity = if (matcher.groupCount() >= 2) { diff --git a/build.gradle b/build.gradle index 32643fe3..1dbcca54 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ import groovy.json.JsonSlurper // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.7.0' + ext.kotlin_version = '1.7.10' repositories { mavenCentral() google() @@ -14,7 +14,7 @@ buildscript { maven { url "https://maven.aliyun.com/repository/public" } } dependencies { - classpath 'com.android.tools.build:gradle:7.2.1' + classpath 'com.android.tools.build:gradle:7.2.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3' classpath 'org.codehaus.groovy:groovy-json:3.0.8' diff --git a/gradle.properties b/gradle.properties index 8e338419..73506954 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,13 +14,8 @@ # org.gradle.parallel=true #Mon Jan 23 10:16:46 CST 2017 org.gradle.jvmargs=-Xms1024m -Xmx8192m -Dfile.encoding=UTF-8 -systemProp.https.proxyHost=127.0.0.1 -systemProp.https.proxyPort=7890 -systemProp.http.proxyHost=127.0.0.1 -systemProp.http.proxyPort=7890 android.useAndroidX=true android.enableJetifier=true org.gradle.daemon=true org.gradle.parallel=true -org.gradle.configureondemand=true -org.gradle.java.home=/Applications/Android Studio.app/Contents/jre/Contents/home \ No newline at end of file +org.gradle.configureondemand=true \ No newline at end of file