标签: android-accessibility

SeekBar 值的 Android TalkBack

所以SeekBar我的应用程序中有一个,我正在使用 Android 的 TalkBack 功能。当SeekBar滚动时,设备提示“(机器人:视contentDescription),SeekBar控件,50%”。是否可以更改它,使其显示实际值(从 -4 到 +4),例如“SeekBar 控件,负 4”?

android seekbar talkback android-accessibility

7
推荐指数
2
解决办法
2006
查看次数

如何以编程方式打开我的应用程序的辅助功能设置?

正如这里提到的,我可以打开 Android 辅助功能设置页面;我知道我可以使用以下代码直接打开我的应用程序辅助功能设置:

Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
startActivityForResult(intent, 0);
Run Code Online (Sandbox Code Playgroud)

但是我如何在Android中启动我自己的APP的辅助功能设置页面?我想将用户直接引导到我的应用程序辅助功能设置页面以授予权限。

我不想使用 adb 并且我无法根植我的设备。我找不到任何可行的解决方案;有什么建议?

android accessibility accessibility-api accessibilityservice android-accessibility

7
推荐指数
0
解决办法
901
查看次数

如何在我的应用程序处于活动状态时禁用对讲功能?

我正在为盲人社区开发一个Android应用程序.在我的应用程序中,我正在使用TTS /音频文件处理所有水龙头/触摸.它工作正常,但当用户打开TalkBack功能时,所有水龙头/触摸都被指定两次.首先,它将由TalkBack和我的内部机制决定.

我能够检测到TalkBack是否已启用.

    public boolean accessibilityEnable(Context context) {
        boolean enable = false;
        Log.e("Reached before function", "yes");
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            try {
                AccessibilityManager manager = (AccessibilityManager) context.getSystemService(Context.ACCESSIBILITY_SERVICE);
                List<AccessibilityServiceInfo> serviceList = manager.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_SPOKEN);
                Log.e("Reached before for loop", "yes");
                for (AccessibilityServiceInfo serviceInfo : serviceList) {
                    String name = serviceInfo.getSettingsActivityName();

                    if (!TextUtils.isEmpty(name) && name.equals(TALKBACK_SETTING_ACTIVITY_NAME)) {
                        enable = true;
                        Log.e("Reached after if loop", "yes");
                    }
                }
                Log.e("Reached after for loop", "yes");
            } catch (Exception e) {
                Log.e("Error", "Error aaya re");
            }
        }
        return enable; …
Run Code Online (Sandbox Code Playgroud)

android talkback android-accessibility

6
推荐指数
0
解决办法
377
查看次数

Android TalkBack:是否有侦听器可以捕获所有辅助功能事件?

背景:有什么问题

我的应用程序有这个词的首字母缩写词让我们假设它是

美国广播公司

当我使用 Google 的语音服务时,它会读出很棒的字母

但是,当我使用三星语音(S 语音)时,它会读出 1 个单词,这不是很好!

那么为什么不设置内容描述呢?

ABC出现在很多地方,设置替代内容描述是不可行的。它也可能会破坏其他语音服务的内容描述,这些服务可以像谷歌一样正确读出

我的计划

所以,我有一个问题了一段时间回来,我发现对于扩展类这个伟大的方法,ViewGroup这是onRequestSendAccessibilityEvent。综上所述,这个方法可以让你AccessibilityEvent在处理之前捕获一个以某种方式修改它。除其他外,您还可以获取要读取的内容描述并对其进行修改。

我的想法是获取当前正在使用的 TTS 或 TalkBack 服务引擎,并使用正则表达式编辑字母 ABC 的内容描述,如果是三星语音(S 语音),则将其设为 ABC。希望!

我的问题

任何人都知道AccessibilityEvent在全局或通用情况下处理的侦听器或回调函数吗? onRequestSendAccessibilityEvent仅用于ViewGroup. 我找不到Activity.

任何人都知道如何捕获所有传入AccessibilityEvent或可能是我问题的替代解决方案

谢谢阅读!

android talkback android-accessibility

6
推荐指数
1
解决办法
4270
查看次数

使用对讲时通过滑动在标题之间导航

Android 9 引入了accessibilityHeading标签,可以通过对讲使用它来宣布标题。

https://developer.android.com/about/versions/pie/android-9.0#a11y

寻找 Heading-based navigation

在我的应用程序中,我的活动中有多个文本视图和一些标题

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="10dp"
            android:accessibilityHeading="true"
            android:text="Accessibility Heading 1"
            android:textColor="#000000"
            android:textSize="18sp" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:text="Message"
            android:textColor="#000000" />
Run Code Online (Sandbox Code Playgroud)

但是当我运行该应用程序时,标题仅被视为普通的文本视图,并且Talkback.

我可以向左滑动以浏览所有元素。可以选择向上滑动以更改对讲公告的模式。例如Default,Links,Controls,Headings等。

选择 时Headings,我希望对讲仅宣布标题并从一个标题跳到另一个标题,但即使在Swipe Left或Swipe Right手势之后它也保持在同一位置。

android accessibility screen-readers talkback android-accessibility

6
推荐指数
1
解决办法
1343
查看次数

uiautormator 总是 IllegalStateException:accessibilityservice 已经注册

我在junitTest中使用uiautomator,在“@BeforeClass”我初始化一个UiDevice:“”mUIDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation()); 首先我完成了一个测试,然后我再次开始测试,我得到一个错误:java.lang.IllegalStateException:UiAutomationService android.accessibilityservice.IAccessibilityServiceClient$Stub$Proxy@7478d40alreadyregistered!

@RunWith(AndroidJUnit4.class)
public class DailyInstrumentedTest  {
@BeforeClass
public static void beforeTest(){


    try {
        mUIDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());  //??device??
    }
}
@Test
public void test(){}
}
Run Code Online (Sandbox Code Playgroud)

android accessibility android-uiautomator android-accessibility

6
推荐指数
0
解决办法
1088
查看次数

如何将可访问性的重点转移到RecyclerView的第一个动作上?

我是Android辅助功能的新手- TalkBack。我知道诸如之类的基本内容contentDescription,importantForAaccessibility以及它们如何构成节点树等。

在我的问题中,我想将可访问性的重点转移RecyclerView到某些操作上的第一个元素上。

通常someView.requestFocus()还是someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)可以的。但这似乎并没有按预期工作RecyclerView。

我试图通过以下方法解决它:

  1. android:accessibilityLiveRegion="polite"但它只会宣布该列表在那里。但这并不会影响可访问性。

  2. 通过集中适配器的第一个元素-这样做是一个坏主意!

除此之外,android:accessibilityTraversalAfter并且android:accessibilityTraversalBefore也不能很好地与Android的列表视图工作。

someView.requestFocus()
someView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED)
Run Code Online (Sandbox Code Playgroud)

android accessibility talkback android-recyclerview android-accessibility

6
推荐指数
1
解决办法
548
查看次数

辅助功能服务:获取可以立即与之交互的视图(与“语音访问”相同)?

我们的目标是获得可与之交互的观点立刻(可以单击现在有什么东西会发生)。如果该视图通常可见且可单击,但已被另一个视图/菜单/侧面板悬停,则应将其省略。

语音访问可以做到这一点。它似乎使用了Accessibility API。

完美的例子是Google地图的底部菜单。展开后,下方的“沿路线搜索”按钮仍然可见,但应用未突出显示。


那我们有什么呢?

  • 有一个AccessibilityEvent流。最有用的是 AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED,因此可以在发生事情时通知我们。
  • 使用getSource(),我们可以获取触发事件的AccessibilityNodeInfo的实例。或者我们可以使用AccessibilityService.getRootInActiveWindow()获得窗口的根。有了它,我们就可以遍历应用程序内的整个层次结构。
  • AccessibilityNodeInfo不提供有关视图的z顺序的任何信息,因此无法了解上方和下方的内容。
  • 底部菜单在同一窗口中(不是模式窗口)。
  • 如果在展开底部菜单时尝试单击“沿路线搜索”按钮,则底部菜单会折叠。因此,您实际上无法单击它,它在菜单下面。
  • 我已经通过的所有参数看上去AccessibilityNodeInfo一样isVisibleToUser(),isClickable(),isContextClickable(),isSelected(),isFocusable(),isFocused(),isAccessibilityFocused()和按钮具有相同的参数时,底部菜单被折叠/展开。用户可见,可聚焦和可点击。

  • 我研究了隐藏的API,没有发现任何有用的东西。

我想念的是什么?


在此处输入图片说明

android accessibility accessibility-api accessibilityservice android-accessibility

6
推荐指数
1
解决办法
128
查看次数

Android 辅助功能 - 无法将 TextViews 宣布为标题或链接

我有一些TextView我想在 Talkback 模式下作为标题或链接宣布的 s。目前,它只是宣布 .html 文件中的文本TextView,但我希望它之后说“标题”,或者根据TextView. 例如,我希望 Talkback 模式宣布“登录 - 标题”而不仅仅是“登录”。

到目前为止我所尝试的是在我的Activity's 中添加这个onCreate():

ViewCompat.setAccessibilityDelegate(v, new AccessibilityDelegateCompat() {
        @Override
        public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfoCompat info) {
            super.onInitializeAccessibilityNodeInfo(host, info);
            info.setHeading(true);
        }
    });
Run Code Online (Sandbox Code Playgroud)

在 Talkback 模式下,没有变化 - 它仍然只是宣布“登录”。

我注意到这个方法onInitializeAccessibilityNodeInfo被多次调用。当我在调试器中逐步执行时,每次触发此方法时,它都显示isHeading()为 false,然后设置为 true。

我是否错误地使用了这种方法?为什么要调用很多次?为什么info.setHeading(true)基本被忽略?

我将如何完成类似的事情,但对讲模式宣布“标签 - 链接”而不是标题?

android talkback android-accessibility

6
推荐指数
1
解决办法
1547
查看次数

我可以在 Android 中使用辅助功能获取和设置 textView 的文本颜色吗

我正在开发一个色盲应用程序,我想知道是否可以使用 Android 中的辅助功能更改 textView 的文本颜色。另外,我想使用辅助功能更改 textSize。

我可以做这些事情吗?,如果是,怎么做?

android accessibilityservice android-accessibility

5
推荐指数
1
解决办法
673
查看次数