问题标签 [android-accessibility]

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 回答
591 浏览

android - AccessibilityService 关机时解除绑定,重启后不重新绑定

我面临一个问题AccessibilityService。当我关闭电源时,我的设备AccessibilityService通过调用onUnbind. 但是当我再次启动我的设备时,AccessibilityService不会重新绑定并且onRebind不会调用服务。我已经使用 adb 命令进行了检查adb shell dumpsys activity service .MyPackage.AccessibilityService,发现我的服务还活着,但AccessibilityEvent由于服务没有反弹,所以没有接收到。在我停止并从设置中重新启动我的 AccessibilityService 后,一切都开始正常工作。我该如何解决这个问题..?我想使用disableselfatonUnbind是因为它会强制用户从设置中启动服务,但是这个调用可以从API 24. 所以我该怎么做..?

0 投票
2 回答
3446 浏览

android - 片段如何在 Android Talkback 中启动时宣布自己?

我想Fragment在 Android Talkback 发布时宣布自己。Activity在 AndroidManifest 文件中的活动标签上添加“android:label”时确实会宣布自己。我该怎么做Fragment呢?

0 投票
0 回答
896 浏览

android - Android- 无障碍服务 - performGlobalAction() 返回 false

请不要认为我的问题与此问题重复(辅助功能服务 - performGlobalAction() 返回 false

performGlobalAction()在可访问性服务类中调用方法onStartCommand(),参数为GLOBAL_ACTION_RECENTSorGLOBAL_ACTION_HOMEGLOBAL_ACTION_BACK

我已将此服务添加到包含必要元数据的清单中,并在手机的可访问性设置中为我的应用启用了可访问性服务。

但是这个方法调用仍然返回 false 并且操作被忽略。

在我的可访问性服务类中,我重写onServiceConnected()了方法并添加了一条打印语句,发现此方法很少被调用,只有在调用时才会performGlobalAction()成功调用。

我的无障碍服务类代码与上面链接中的代码相似。我错过了什么吗?或者有没有其他合适的方法来启动无障碍服务?

0 投票
2 回答
1477 浏览

android - Android AccesibilityService 未收到事件

一段时间以来,我一直在遇到这个问题:

此无障碍服务读取通知并处理它们。起初它在我的手机(Moto G4)上成功运行,但后来它无法在任何智能手机上运行,​​即使这个相同的代码在模拟器上 100% 运行。

我打开了应用程序的辅助功能服务,我倾向于停用它并再次激活它,以防在某些测试运行时,我重新启动手机并完成应用程序的完整安装并在系统设置中激活该服务。

令我困惑的是,如上所述,这段代码在模拟器上运行得完美无缺,而且以前在我的手机上也是如此。AccesibilityService 只是在某些智能手机上不接收任何事件。

在 Moto G4、LG G2、华硕、华为...运行 Marshmallow / Lollipop(不工作)
在模拟器 API 16-19-23 上测试,它们都按预期工作

这是 AndroidManifest.xml 中的声明

辅助功能服务配置 xml

为什么 AccessibilityService 不再接收任何事件?

0 投票
1 回答
767 浏览

android - 从覆盖窗口执行后退按钮 - android

我添加了一个覆盖视图(LinearLayout)WindowManager ,并设置了以下参数:

此 LinearLayout 包含三个按钮“HOME”、“RECENTS”、“BACK”

onKeyEvent()当按下手机的后退按钮时,我已实现从窗口管理器中删除此覆盖视图。

当从我的覆盖布局中按下后退按钮时,我会调用我的辅助功能服务并且它可以正常工作。现在,当我按下手机的后退按钮时,我的叠加视图仍然存在。因为我WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE在参数中设置了这个标志,所以它没有接收到关键事件。

但是当我没有设置这个标志时,从叠加层按下后退按钮只会隐藏叠加层本身,而不是在它下面的活动上执行。

我希望我的叠加层在按下手机的后退按钮时隐藏。并且还可以在从我的叠加层按下后退按钮时执行后退按钮功能。

有什么方法可以区分实际的按钮按下和软件触发的按钮按下performGlobalAction(MyAccessibilityService.ACTION_BACK)吗?关于如何正确实施这一点的任何建议?

0 投票
4 回答
8102 浏览

android - Android 可访问性识别标题

我有最新版本的 Talkback 及其宣布“我的顶级文本标题”。Android 本机行为正在为我的顶级元素添加“标题”。我找不到打开/关闭航向通知的方法。是否有 API 来控制其行为。在先前版本的对讲版本中,它本身并没有宣布“标题”。

0 投票
1 回答
1479 浏览

android - ScrollView 通过对讲而不是其子 TextViews 获得焦点

我有一个 ScrollView,里面有多个 TextView(默认情况下不可聚焦)。当我使用 TalkBack 浏览屏幕时,TalkBack 只关注整个 ScrollView 并一次读取其所有内容。

我尝试了一些方法来让 TalkBack 关注每个 TextView 而不是 ScrollView 容器,但我找不到一个好的方法。这是一个示例代码:

我尝试添加android:focusable=true到每个 TextView,这使它们可以通过 TalkBack 获得焦点,但父 ScrollView 仍然首先获得焦点。理想情况下,我希望 ScrollView 完全被 TalkBack 忽略,并且焦点直接转到它的子视图。

如何让 TalkBack 完全忽略 ScrollView 并一一关注每个子 TextView?

0 投票
3 回答
5725 浏览

android - onAccessibilityEvent 根本没有被调用

我正在尝试实现一个AccessibilityService. 我在下面分享了我的代码。当我从设置菜单打开辅助功能服务时,它会onServiceConnected()被调用,但onAccessibiltyEvent()根本不会被调用。请指导我。

清单文件中的服务声明。

XML 文件

MyAccessibiltyService.java

请注意,我已经检查了所有 stackoverflow 答案,因此不要将其标记为重复。

0 投票
0 回答
345 浏览

android - 如何更改对讲宣布按 Alt + Shift + Enter 激活 Google 地图标记

我有一张谷歌地图并在地图上添加了标记。当可访问性模式打开并且我们使用蓝牙键盘导航到地图标记时,它会宣布按Alt+ ⇧Shift+Enter ↵</kbd> to activate. However pressing the key combination does not have any action on map. How can i disable map marker to stop announcing this. I have overriden Enter ↵</kbd> key and added my functionality on tap of Enter button. How can i change talkback to announce press Enter ↵</kbd> instead of press Alt+⇧Shift+Enter ↵</kbd> to activate on map marker.

我已经尝试了如何更改 Android 对讲指令中提供的解决方案,以双击和长按 并添加委托,mapfragment.getView()accessibility.getActionList始终为空白。

一些帮助将不胜感激谢谢。

0 投票
1 回答
2857 浏览

android - 如何让 TalkBack 自动读取 TextView 错误信息?

我目前正在使我的应用程序可访问,但我的 EditTexts 有问题:

在每个 EditText 中,用户的输入都会在某个时候得到验证(例如,在按下按钮后),如果输入无效,我会使用editText.setError("message"). 问题是如果 TalkBack 开启,它不会自动聚焦并读取错误。另外,由于我无法查看错误的视图,因此我无法通过sendAccessibilityEvent.

我将不胜感激有关如何在仍在使用editText.setError().

编辑 1为@Abhishek V 解决方案添加了代码: