diff --git a/.github/workflows/android-test.yml b/.github/workflows/android-test.yml index d8a663a3f..d7152a3e3 100644 --- a/.github/workflows/android-test.yml +++ b/.github/workflows/android-test.yml @@ -35,8 +35,8 @@ jobs: run: | ./gradlew autojs:buildJsModule ./gradlew :inrt:assemble - ./gradlew :app:assembleRelease + ./gradlew :app:assembleRelease --info - uses: actions/upload-artifact@v6 with: name: apks(no signing) - path: app/build/outputs/apk/v7/release/*.apk \ No newline at end of file + path: app/build/outputs/apk/v7/release/*.apk diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 9c252b38f..aa0a48761 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -141,6 +141,9 @@ android { sourceSets { getByName("main") { res.srcDirs("src/main/res", "src/main/res-i18n") + aidl { + srcDirs("src/main/aidl", "src/main/java") + } } } configurations.all { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b3e5174a5..c2fbd5866 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -194,6 +194,22 @@ + + + + + + + + + + + 1) { + runningEngines.forEach(compareEngine => { + let compareSource = compareEngine.getSource() + '' + if (currentEngine.id !== compareEngine.id && compareSource === currentSource) { + // 强制关闭同名的脚本 + compareEngine.forceStop() + } + }) +} + +sleep(100) + +if (!floaty.checkPermission()) { + toast("需要悬浮窗权限来显示悬浮窗,请在随后的界面中允许并重新运行本脚本。"); + floaty.requestPermission(); + exit() +} + +if (!requestScreenCapture()) { + toastLog('请求截图权限失败') + exit() +} + +// 识别结果和截图信息 +let result = [] +let running = true +let capturing = true + +/** + * 截图并识别OCR文本信息 + */ +function captureAndOcr() { + capturing = true + let img = captureScreen() + if (!img) { + toastLog('截图失败') + } + let start = new Date() + result = paddle.ocr(img); + let elapsed = new Date() - start + log(result); + toastLog('耗时' + elapsed + 'ms') + + // 根据当前设备和模型记录识别时间 + recognitionTime[currentDevice][currentModel] = elapsed + updateDeviceTimeDisplay() + + capturing = false +} + + +// 获取状态栏高度 +let offset = -getStatusBarHeightCompat() +//let offset = 0; + +// 绘制识别结果 +let window = floaty.rawWindow( + +); + +// 设置悬浮窗位置 +ui.post(() => { + window.setPosition(0, offset) + window.setSize(device.width, device.height) + window.setTouchable(false) +}) + +// 操作按钮 - 在每个设备下方显示快速和精确时间 +let clickButtonWindow = floaty.rawWindow( + + + + + + + + + + + + + + + + + + + + + + + +