gpt4 book ai didi

android - 在android中使用无障碍服务检测 "shut-down/reboot menu"?

转载 作者:行者123 更新时间:2023-11-29 01:23:18 26 4
gpt4 key购买 nike

我已经创建了无障碍服务,我想调用 OnAccessibilityEvent()仅当“关机”菜单出现时,我的目标是调用 TTS 引擎,以便仅当屏幕上出现此菜单时才让手机通话。

我需要了解的是如何检测这唯一的事件。

这是我的 xml:

<?xml version="1.0" encoding="utf-8" ?>
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFlags="flagDefault"
android:accessibilityFeedbackType="feedbackAllMask"
android:canRetrieveWindowContent="true"
/>

非常感谢!

最佳答案

不,没有可靠的方法来做到这一点。做到这一点的唯一方法是 hacky。执行此操作的 hacky 方法如下:

您可以监听窗口内容更改事件,我相信常量是 TYPE_WINDOW_CONTENT_CHANGED

所以完整的代码是:

public void onAccessibilityEvent(AccessibilityEvent e) {

switch (e.getEventType()) {
case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: {

if (isPowerMenu(getRootInActiveWindow()) {
doYourStuff();
}
}
}
}

private boolean isPowerMenu(AccessibilityNodeInfo nodeInfo) {
//In here assume you've been given the root accessibility
//node of the power menu. It should be easy to detect specific
//power menu views. However, this will be very fragile, and
//depend on which version of the Android Launcher, OS, etc you
//have. Hence the comments, and no code :)
}

问题是每个电源开/关菜单可能不同。所以这种方法只适用于特定的启动器应用程序。然而,即便如此,某人也可能会在另一个应用程序中创建相同的模态。因此,即使在给定的启动器/设备/操作系统版本设置中,您也可能会出现误报检测。

关于android - 在android中使用无障碍服务检测 "shut-down/reboot menu"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35503894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com