问题标签 [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 回答
691 浏览

android - 启用可访问性后未调用 onServiceConnected

我有两个应用程序 - MyApplication 和 FirstApp。MyApplicaton 中有一个按钮,单击该按钮可以导航到 FirstApp。

现在,我想使用 AccessibilityService 读取 FirstApp 的内容。

MyApplication- MainActivity.java 我的代码是这样的

MyAccessibilityService.java

AndroidManifest.xml

可访问性_config.xml

问题是在设备上启用可访问性后, onServiceConnected() 根本没有被调用。对于测试,我使用的是 Android 8.0.0,API 26。

0 投票
1 回答
1481 浏览

accessibilityservice - Android Accessibility Service 在 Oreo 上运行一两天后停止工作

背景:

我有一个从AccessibilityService. 每当更改窗口时,都会调用以下函数,该函数会为我提供前台应用程序的应用程序名称。

以下是我设置的配置:

可访问性服务.xml

问题: 它在一段时间内工作正常,但一两天后它突然停止工作。它不调用该onAccessibilityEvent(AccessibilityEvent event)函数。虽然该应用程序的无障碍服务已启用,但在更改窗口时仍不显示应用程序名称。

如果应用程序从睡眠模式返回,它可能不起作用?我不得不在我的调试版本之上重新安装应用程序,然后它又开始工作了,但需要多长时间。

问题:如何确保在更改窗口时它总是返回应用程序名称?

0 投票
1 回答
265 浏览

objective-c - ObjectiveC Accessibility API:取消最大化窗口

我不确定我指的是否正确,但是当我使用“<strong>UnMaximize”这个词时,我指的是:

当您单击 Chrome 窗口左上角第三个绿色按钮时,它会最大化窗口。当我在上面使用“<strong>UnMaximize”一词时,我指的是再次单击该按钮以使其不再处于全屏状态的行为。

(顺便说一句,MacOS 术语中正确的词是什么?)

我喜欢使用Easy Move+Resize 应用程序。虽然它可以移动 Windows,但不幸的是,它对最大化的窗口没有影响。幸运的是,代码可以在Github上找到。

我很好奇是否有人可以指出如何使用 Accessibility API 取消最大化窗口

有谁是 UnMaximize 相当于kAXCloseButtonAttribute

如果有帮助,我正在使用 MacOs 10.12。

0 投票
1 回答
977 浏览

android - 无障碍服务未启动

我有一个可访问性服务,用于跟踪一些应用程序的使用情况并让用户知道。一切正常。不确定我的无障碍服务突然停止工作。它甚至没有开始。已授予许可。但是服务仍然没有启动。

在清单文件中

无障碍服务代码:

在字符串文件中:

可访问性服务 xml 文件:

我在我的主要活动中获得了访问权限,如下所示:

并注意到它在模拟器上完美运行。

0 投票
1 回答
267 浏览

android - 宣布对讲时,文本转语音 Speak api 被中断

语境:

我正在研究文本的沉浸式阅读,用户可以通过单击前进、后退、播放暂停按钮来操纵阅读。对于阅读文本,我正在使用谷歌文本到语音引擎,同时阅读我们需要突出显示它当前正在阅读的单词。

问题:[辅助功能模式] 在阅读过程中,如果用户进行了任何滑动或点击任何控件,阅读将停止并且正在阅读 contentDescription。当检查 onStop() 回调时,它说话语被打断。

是否有回调来知道android是否完成了contentDescription的公告?我可以使用它并继续播放/阅读文本。

提前致谢。

问候,文卡特什。

0 投票
2 回答
444 浏览

google-chrome - 哪些辅助功能 API 可用于启用 Chrome 和 Firefox?UIA 效果不佳,经常中断

我们正在编写类似 Assistive User Agent 的东西,它使用 Accessibility API 读取屏幕并为用户提供帮助。Chrome 和 Firefox 似乎并不原生支持 UIA。这导致我们的实现在 Chrome 或 Firefox 更新时中断。什么是可在除 Microsoft UIA 之外的 Chrome 和 Firefox 上运行的可访问性 API。

0 投票
0 回答
91 浏览

macos - 什么是 AXReplaceRangeWithText macOS 可访问性属性?

在 macOS Mojave 10.14 中,当针对许多应用程序在鼠标下的 UI 元素上调用 AXUIElementCopyAttributeNames() 函数时,结果中会出现一个新的 AXReplaceRangeWithText 属性。但是,当我在 UI 元素上调用 AXUIElementCopyAttributeValue() 函数并传递 AXReplaceRangeWithText 属性时,它要么导致目标应用程序崩溃,要么如果它是文本字段或文本区域,则会在目标应用程序中输入垃圾文本。

任何人都可以解释 AXReplaceRangeWithText 属性是什么,如何使用它,它的作用以及谁负责它?Apple 没有记录它,也没有出现在可访问性 API 头文件中。我向 Apple 提交了错误报告,但没有采取任何行动。

0 投票
0 回答
244 浏览

c# - 在 C# 中,可以访问和更改 Windows 消息泵以响应 WM_GETOBJECT 吗?

因此,如果您使用 Accessibility API 知道它的 Hwnd,那么有一种很好的技术可以从 Excel.exe 会话中获取 COM 指针跨进程(同一台机器)。具体的 Windows API 函数是AccessibleObjectFromWindow;如果使用 OBJID_NATIVEOM 的参数调用,则 Excel.exe 会将 COM 指针封送回 Excel.Window 对象。很酷。

所以我想知道开发人员是否可以为他们自己的应用程序实现相同的技术。 答案是肯定的,他们在消息泵代码中响应特定消息 WM_GETOBJECT。虽然这对于 C++ 应用程序是可行的,但我对如何为 C# 应用程序执行此操作感到困惑。

我假设答案是做一些事情来访问消息泵处理代码并改变它。也许可以使用一些魔法属性。只要它有效,我对任何一种技术都持开放态度。

这是从 Excel 获取 COM 指针的代码

这看起来很有希望从 NativeWindow 中处理 WM_GETOBJECT 返回一个 IOleCommandTarget

0 投票
0 回答
622 浏览

android - 执行类似于 GestureDescription 的点击、滑动、投掷 24 以下?

用例是我需要从我的可访问性服务在前台的另一个应用程序上执行一些交互,如点击、滑动等。我可以使用 Android Noughat 中添加的 GestureDescription 来实现这一点。如何在以前的版本中实现这一点?TouchUtils 不能用于生产。我在询问之前进行了研究,但无法找到解决方案。一个片段会很有帮助。

0 投票
1 回答
852 浏览

android - 生物识别提示和无障碍服务

以前,FingerprintManager 可用于处理指纹身份验证,并且不依赖 Activity 来通过系统对话框。它可以在任何地方使用,就像任何传感器管理器一样。

现在,谷歌已经在https://developer.android.com/reference/androidx/biometrics/BiometricPrompt发布了支持库版本, 并弃用了 FingerprintManager。他们希望所有应用程序都通过相同的统一系统对话框。

大问题是 - 整个事情都与 FragmentActivity 紧密耦合。

我希望在 AccessibilityService 中使用此指纹身份验证(显示在其他应用程序上)。

可以做什么?

我正在考虑的一些选项:

  1. 回到旧的 FingerprintManager 尽管已被弃用。
  2. 实现一些透明的 Activity,它会以某种方式弹出到其他应用程序之上,只是为了满足 API 对 FragmentActivity 的要求。

更新

下面接受了通用软件的答案。获取可访问性事件时,我能够在应用程序之上成功启动 Activity,并开始使用 BiometricPrompt。不过,BiometricPrompt 还有其他问题,它似乎是一个非常不成熟的 API,从未经过压力测试——但这超出了这个问题的范围。