6.6.2 - Alpha5 - 主页抽屉无障碍服务开关支持与脚本代码同步

This commit is contained in:
SuperMonster003
2025-03-25 10:07:19 +08:00
parent 9dd763644d
commit 1b3ff3bb5a
5 changed files with 58 additions and 23 deletions

View File

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

View File

@@ -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<out Any?>) = ensureArgumentsIsEmpty(args) {
start(scriptRuntime, args)
}
@JvmStatic
@RhinoRuntimeFunctionInterface
fun stop(scriptRuntime: ScriptRuntime, args: Array<out Any?>) = ensureArgumentsIsEmpty(args) {
accessibilityTool.stopService()
}
@JvmStatic
@RhinoRuntimeFunctionInterface
fun disable(scriptRuntime: ScriptRuntime, args: Array<out Any?>) = ensureArgumentsIsEmpty(args) {
stop(scriptRuntime, args)
}
@JvmStatic
@RhinoRuntimeFunctionInterface
fun isRunning(scriptRuntime: ScriptRuntime, args: Array<out Any?>) = ensureArgumentsIsEmpty(args) {

View File

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