问题标签 [accessibility-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
144 浏览

ios - 以编程方式使用 iOS 辅助功能声音

我知道人们可以通过AVSpeechSynthesizer课程以编程方式使用 iOS 中的文本到语音合成器。

然而,与 iOS 的非视觉交互基于语音和非语音声音。例如,每次选择应用程序时,都会听到短促的“滴答”声,同时 VoiceOver 会说出应用程序的名称。

我想知道是否有允许以编程方式重现这些声音以及语音的 Objective-C API。

0 投票
2 回答
1984 浏览

android - 如何从 AccessibilityNodeInfo 获取 webview

我正在创建一个需要使用 AccessibilityService 的应用程序。并且获取其他应用程序的窗口内容也没有问题。我已从窗口内容中检测到所有可用的子项,并且该子项显示在 AccessibilityNodeInfo 中。现在我在 AccessibilityNodeInfo 中有一个 webview 我需要获取该 WebView 的 URL,但是没有办法将 AccessibilityNodeInfo 转换为相关的视图。

有什么方法可以从 AccessibilityNodeInfo 获取 webview 吗?

0 投票
1 回答
250 浏览

android - GIF 键盘如何捕获在 android 中输入的内容?

我最近有机会查看 GIF 键盘 ( https://play.google.com/store/apps/details?id=com.riffsy.FBMGIFApp )

它能够找出在whatsapp、messenger和其他平台中'#'之后输入的内容。

我一直在环顾四周,寻找一种方法来复制这种行为。

我一直在看android的可访问性api。但是如何跟踪用户在软键盘上输入的内容呢?

自定义键盘,如 android 中的 gif 键盘- 与此不同,我不想实现自己的键盘,而是应该与当前键盘一起使用。

有什么我可以听的广播吗?这是 Whatsapp 允许跟踪密钥的功能还是操作系统?

非常感谢您对此的任何帮助。

PS:我知道我应该发布到目前为止我尝试过的解决方案,但是经过几天的调查,我确实没有发现任何实质性的东西。

0 投票
0 回答
66 浏览

webkit - 从 AXWebArea 提取或重建 HTML

我有一个可以通过 Accessibility API 访问的 AXWebArea。有没有办法提取或重建用于创建 AXWebArea 的 HTML?我正在调试的应用程序在将 HTML 加载到 AXWebArea 之前对其进行修改,我想了解它正在进行哪些修改。

0 投票
1 回答
2065 浏览

android - 防止 onAccessibilityEvent(AccessibilityEvent event) 进入无限循环

我有一个AccessibilityEvent可以自动停止应用程序。但是当启动应用程序信息意图时,它会进入打开/关闭警报对话框的无限循环。

我该如何预防?这是代码:

force_stop_button顺便说一句,在应用信息意图开始后立即获得点击的任何想法?

编辑:我认为问题出在AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED. 如果我绕过该检查,它可以工作,但很难控制。

0 投票
0 回答
454 浏览

android - 企业控制 Android 无障碍服务“选择加入”

我们正在开发一种通过 AirWatch(EMM/MDM)工作的企业无障碍服务,并发现我们可以使用 MDM 控制大多数 Android 设置,但是我们似乎无法找到一种方法让企业将我们的应用程序自动注册到接收辅助功能事件 - 这需要用户通过打开辅助功能系统设置并通过选中复选框手动注册应用程序来手动选择加入。

该设备归企业所有,而不是用户所有。我们的理解是,这正是 MDM 的全部内容(将设备的所有权/控制权从用户转移到企业),因此,有没有办法以编程方式或集中自动注册我们的应用程序,以便它可以在不依赖用户的情况下接收辅助功能事件?我们的应用程序将被侧载到数以万计的设备上,其中一些设备的设置菜单受到限制,因此手动注册并不是一个真正的选择。

选择接收可访问性事件示例

如果没有办法,这仅仅是因为Android还没有添加这个能力吗?可以通过 Knox SDK 完成吗?有没有其他方法可以实现这一目标?

0 投票
3 回答
6094 浏览

android - Android 无法使用无障碍服务在少数设备上读取窗口内容

我的要求:从特定应用程序的弹出窗口、对话框等中读取文本。

我已经实施了无障碍服务,并且我正在根据我的要求接收适当的事件和数据。然而,在测试时,我意识到在某些设备上,他们没有使用 AlertDialog 或 Dialog,而是使用了一个活动(主题为对话框)。因此,在我的可访问性事件中,我只收到活动标题,有没有办法可以找到这个特定弹出活动显示的文本?

我已经进行了相当艰苦的搜索,但在该主题上没有得到太多帮助,文档也没有在这个问题上有任何好处。无障碍服务的代码不多,但如果您仍然需要,我会稍后发布。

谢谢

0 投票
2 回答
1205 浏览

android - 使用无障碍服务 Android

我在 android 中使用 Accessibility 服务来检测前台应用程序。

我想听 2 个可用的辅助功能事件

TYPE_VIEW_TEXT_CHANGED

TYPE_WINDOW_STATE_CHANGED

我想收听所有window state change正在工作的事件,但对于第二个事件,我想只收听view_text_changed1-2 个应用程序的事件,而不是全部。

我已经阅读并尝试了android:packageNamesxml 中的参数,但它会对 window_state_changed 事件施加限制。

有没有其他方法可以做到这一点?

0 投票
1 回答
2340 浏览

android - Android 无障碍服务 - 屏幕更新不一致

我将 AndroidAccessibilityService部署到运行 Android 5.0.1 的三星 Note 4 上。

我使用 WhatsApp 作为测试平台,但这适用于任何应用程序,并且更多的是关于无障碍服务如何触发事件的问题。

Android 触发的事件2048 (TYPE_WINDOW_CONTENT_CHANGED)不一致。如果我向我的 WhatsApp 发送消息,并且在 75% 的时间里,这个事件会被触发并且有时根本不会触发。

是否有一个原因?可访问性事件是否不可靠..?

此外,当用户滚动或 WhatsApps 的聊天窗口中出现新的通信时,似乎该事件4096 (TYPE_VIEW_SCROLLED)确实会持续触发,但是,似乎无论如何都无法确定设备的当前滚动位置是什么?AccessibilityEvent.getSource()提供对列表的某些元数据的访问(在本例中为 android:id/list),但是没有关于此列表或其子元素的滚动位置的信息。子列表与屏幕上显示的内容相关,boundsToScreen/Parent无论您查看列表底部还是中间或顶部,其值都是相同的。是否有任何线索可以帮助我从我看到的AccessibilityEventNodeInfo实例中确定滚动位置?

最后,当2048 (TYPE_WINDOW_CONTENT_CHANGED)事件触发时,有时新元素实际上并不可用AccessibiltyEvent.getSource()(即使您使用 while 循环迭代到根元素getParent(),然后再次向下扫描)。在将更改应用于 UI 之前,该事件似乎正在拍摄屏幕快照。Athread.sleep没有帮助 - 看起来AccessibilityEventNodeInfo更像是快照而不是对 UI 的实时访问?有什么办法吗?

0 投票
3 回答
4148 浏览

android - 如何向 AccessibilityService 发送自定义事件?

我的程序目的:触发服务中的 BACK 按钮

我尝试了很多方法,没有人可以达到这个目的,最后我发现了AccessibilityService,它可能是实现这个功能的最可能的方法。

我创建了这个 AccessibilityService,并测试了它是有效的

然后我试图转移performGlobalAction到服务,但它没有执行该操作。

我也尝试以不同的方式发送自定义事件,但没有人可以发送到 MyAccessibilityService

如何向 MyAccessibilityService 发送自定义事件或消息,以便我可以识别事件和消息以执行操作?