From 1b3ff3bb5aa601293d17510693bf3b87387ba782 Mon Sep 17 00:00:00 2001 From: SuperMonster003 Date: Tue, 25 Mar 2025 10:07:19 +0800 Subject: [PATCH] =?UTF-8?q?6.6.2=20-=20Alpha5=20-=20=E4=B8=BB=E9=A1=B5?= =?UTF-8?q?=E6=8A=BD=E5=B1=89=E6=97=A0=E9=9A=9C=E7=A2=8D=E6=9C=8D=E5=8A=A1?= =?UTF-8?q?=E5=BC=80=E5=85=B3=E6=94=AF=E6=8C=81=E4=B8=8E=E8=84=9A=E6=9C=AC?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .changelog/lang_zh-Hans.json | 3 +- .../accessibility/AccessibilityService.kt | 4 ++ .../runtime/api/augment/automator/Auto.kt | 14 +++++ .../autojs/ui/main/drawer/DrawerFragment.kt | 54 ++++++++++++------- version.properties | 6 +-- 5 files changed, 58 insertions(+), 23 deletions(-) diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index 430088c9..a8d69542 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -27,7 +27,8 @@ "部分控件主题色与背景色对比度过低时的视觉体验", "应用内页面导航栏设置为透明或半透明以增强视觉体验", "UI 模式状态栏及导航栏默认为 `md_grey_50` 色值且设置为亮色模式", - "长按应用主页 \"文件\" 标签可切换浮动按钮可见状态", + "应用主页 \"文件\" 标签支持通过长按切换浮动按钮可见状态", + "应用主页抽屉无障碍服务开关支持与脚本代码同步", "代码编辑器标题文字支持字体大小自适应", "日志页面浮动按钮可见状态与列表滚动操作联动", "脚本项目配置文件 project.json 支持更多打包选项 _[`issue #305`](http://issues.autojs6.com/305)_ _[`issue #306`](http://issues.autojs6.com/306)_", diff --git a/app/src/main/java/org/autojs/autojs/core/accessibility/AccessibilityService.kt b/app/src/main/java/org/autojs/autojs/core/accessibility/AccessibilityService.kt index 44307cd9..7c70edc7 100644 --- a/app/src/main/java/org/autojs/autojs/core/accessibility/AccessibilityService.kt +++ b/app/src/main/java/org/autojs/autojs/core/accessibility/AccessibilityService.kt @@ -11,6 +11,8 @@ import org.autojs.autojs.core.accessibility.SimpleActionAutomator.Companion.Acce import org.autojs.autojs.core.automator.AccessibilityEventWrapper import org.autojs.autojs.event.EventDispatcher import org.autojs.autojs.core.pref.Language +import org.autojs.autojs.ui.main.drawer.DrawerFragment.Companion.Event.AccessibilityServiceStateChangedEvent +import org.greenrobot.eventbus.EventBus import java.util.TreeMap import java.util.concurrent.ExecutorService import java.util.concurrent.Executors @@ -114,6 +116,7 @@ open class AccessibilityService : android.accessibilityservice.AccessibilityServ mEventExecutor?.shutdownNow() callback?.onDisconnected() + EventBus.getDefault().post(object : AccessibilityServiceStateChangedEvent {}) super.onDestroy() } @@ -123,6 +126,7 @@ open class AccessibilityService : android.accessibilityservice.AccessibilityServ Log.d(TAG, "onServiceConnected: $serviceInfo") instance = this callback?.onConnected() + EventBus.getDefault().post(object : AccessibilityServiceStateChangedEvent {}) LOCK.lock() ENABLED.signalAll() LOCK.unlock() diff --git a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt index 7bfa03fe..58fa4f25 100644 --- a/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt +++ b/app/src/main/java/org/autojs/autojs/runtime/api/augment/automator/Auto.kt @@ -36,6 +36,8 @@ class Auto(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime override val selfAssignmentFunctions = listOf( ::start.name, ::stop.name, + ::enable.name, + ::disable.name, ::isRunning.name, ::exists.name, ::stateListener.name, @@ -117,12 +119,24 @@ class Auto(private val scriptRuntime: ScriptRuntime) : Augmentable(scriptRuntime accessibilityTool.startService() } + @JvmStatic + @RhinoRuntimeFunctionInterface + fun enable(scriptRuntime: ScriptRuntime, args: Array) = ensureArgumentsIsEmpty(args) { + start(scriptRuntime, args) + } + @JvmStatic @RhinoRuntimeFunctionInterface fun stop(scriptRuntime: ScriptRuntime, args: Array) = ensureArgumentsIsEmpty(args) { accessibilityTool.stopService() } + @JvmStatic + @RhinoRuntimeFunctionInterface + fun disable(scriptRuntime: ScriptRuntime, args: Array) = ensureArgumentsIsEmpty(args) { + stop(scriptRuntime, args) + } + @JvmStatic @RhinoRuntimeFunctionInterface fun isRunning(scriptRuntime: ScriptRuntime, args: Array) = ensureArgumentsIsEmpty(args) { diff --git a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt index 26d4b451..6c7092c7 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt +++ b/app/src/main/java/org/autojs/autojs/ui/main/drawer/DrawerFragment.kt @@ -102,8 +102,6 @@ open class DrawerFragment : Fragment() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - EventBus.getDefault().register(this) - mContext = requireContext() mActivity = requireActivity() as MainActivity @@ -178,14 +176,15 @@ open class DrawerFragment : Fragment() { mClientModeItem = DrawerMenuDisposableItem(this, R.drawable.ic_computer_black_48dp, R.string.text_client_mode).also { setClientModeItem(it) } - setStateDisposable(JsonSocketClient.cxnState - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { - if (it.state == DevPluginService.State.DISCONNECTED) { - mClientModeItem.subtitle = null - } - consumeJsonSocketItemState(mClientModeItem, it) - }) + setStateDisposable( + JsonSocketClient.cxnState + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { + if (it.state == DevPluginService.State.DISCONNECTED) { + mClientModeItem.subtitle = null + } + consumeJsonSocketItemState(mClientModeItem, it) + }) setOnConnectionException { e: Throwable -> mClientModeItem.setCheckedIfNeeded(false) ViewUtils.showToast(context, getString(R.string.error_connect_to_remote, e.message), true) @@ -195,14 +194,15 @@ open class DrawerFragment : Fragment() { } JsonSocketServerTool(mContext).apply { - setStateDisposable(JsonSocketServer.cxnState - .observeOn(AndroidSchedulers.mainThread()) - .subscribe { state: DevPluginService.State -> - mServerModeItem.subtitle = takeIf { state.state == DevPluginService.State.CONNECTED }?.let { - NetworkUtils.getIpAddress() - } - consumeJsonSocketItemState(mServerModeItem, state) - }) + setStateDisposable( + JsonSocketServer.cxnState + .observeOn(AndroidSchedulers.mainThread()) + .subscribe { state: DevPluginService.State -> + mServerModeItem.subtitle = takeIf { state.state == DevPluginService.State.CONNECTED }?.let { + NetworkUtils.getIpAddress() + } + consumeJsonSocketItemState(mServerModeItem, state) + }) setOnConnectionException { e: Throwable -> mServerModeItem.setCheckedIfNeeded(false) ViewUtils.showToast(context, getString(R.string.error_enable_server, e.message), true) @@ -396,16 +396,25 @@ open class DrawerFragment : Fragment() { binding.exit.setOnClickListener { mActivity.exitCompletely() } } + override fun onStart() { + super.onStart() + EventBus.getDefault().register(this) + } + override fun onResume() { super.onResume() syncMenuItemStates() } + override fun onStop() { + super.onStop() + EventBus.getDefault().unregister(this) + } + override fun onDestroy() { super.onDestroy() mClientModeItem.dispose() mServerModeItem.dispose() - EventBus.getDefault().unregister(this) // mActivity.unregisterReceiver(mReceiver) } @@ -435,6 +444,12 @@ open class DrawerFragment : Fragment() { // ViewCompat.getWindowInsetsController(mActivity.window.decorView)?.show(WindowInsets.Type.systemBars()) } + @Subscribe + @Suppress("unused", "UNUSED_PARAMETER") + fun onAccessibilityServiceStateChanged(event: Event.AccessibilityServiceStateChangedEvent) { + mAccessibilityServiceItem.sync() + } + private fun initMenuItems() { drawerMenuAdapter = listOf( DrawerMenuGroup(R.string.text_service), @@ -510,6 +525,7 @@ open class DrawerFragment : Fragment() { class Event { interface OnDrawerOpened interface OnDrawerClosed + interface AccessibilityServiceStateChangedEvent } } diff --git a/version.properties b/version.properties index 5733a105..b56c1a7b 100644 --- a/version.properties +++ b/version.properties @@ -1,5 +1,5 @@ -#Mon Mar 24 19:54:51 CST 2025 -BUILD_TIME=1742817291092 +#Tue Mar 25 00:54:41 CST 2025 +BUILD_TIME=1742835281518 COMPILE_SDK_VERSION=35 JAVA_VERSION=23 JAVA_VERSION_MIN_RADICAL=0 @@ -17,6 +17,6 @@ RAPID_OCR_OPENCV_MOBILE_LABEL_VERSION=13 RAPID_OCR_OPENCV_MOBILE_VERSION=4.5.3 TARGET_SDK_VERSION=35 TARGET_SDK_VERSION_INRT=29 -VERSION_BUILD=3052 +VERSION_BUILD=3053 VERSION_NAME=6.6.2 Alpha5 VSCODE_EXT_REQUIRED_VERSION=1.0.8