mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-04 21:01:01 +08:00
修复悬浮窗中无法正确获取包名的问题
This commit is contained in:
parent
234f8c3380
commit
f221b9aeac
@ -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)
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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
|
||||
Loading…
Reference in New Issue
Block a user