修复悬浮窗中无法正确获取包名的问题

This commit is contained in:
TonyJiangWJ 2023-08-13 19:43:20 +08:00
parent 234f8c3380
commit f221b9aeac
5 changed files with 25 additions and 25 deletions

View File

@ -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)

View File

@ -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<String> wordLabels = new Vector<>();
protected List<String> 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());

View File

@ -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<String> = HashSet()
private val existsPackage: Set<String> = HashSet()
private val windowIdActivityMap: HashMap<Int, String> = 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) {

View File

@ -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'

View File

@ -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
org.gradle.configureondemand=true