首页 文章

更改Android中对讲的语音

提问于
浏览
3

当ImageView通过可访问性进行聚焦时,我正在尝试更改TalkBack宣布的文本 .

Android文档声明我们应该创建一个AccessibilityDelegate,并覆盖onPopulateAccessibilityEvent(我正在使用支持库,因为我也支持GingerBread)

因此,我的代码如下:

public static void setImageDelegate(View view) {
    AccessibilityDelegateCompat delegate = new AccessibilityDelegateCompat() {
        @Override
        public void onPopulateAccessibilityEvent(View host, AccessibilityEvent event) {
            event.getText().add(event.getContentDescription() + ", image");
        }
    };
    ViewCompat.setAccessibilityDelegate(view, delegate);
}

当我在我的imageview上调用此函数时,委托被设置,但未读取修改后的文本 . 它只是读取原始内容描述 . 我做错了什么或遗漏了一些关于辅助功能的东西?

单步执行代码,它似乎正在添加正确的文本,但仍然没有更改语音文本 .

注意:以上是一个人为的例子,可以使用内容描述,但我试图弄清楚为什么它在自定义视图上尝试之前不起作用 .

1 回答

  • 6

    在ICS及以上版本中,TalkBack在大多数情况下不使用辅助功能事件文本 . 相反,它会检查视图公开的AccessibilityNodeInfo的文本和内容描述 . 您需要覆盖onInitializeAccessibilityNodeInfo .

    但是,在大多数情况下,您只需要调用View.setContentDescription .

    在这种特殊情况下,您不应该设置任何东西,因为TalkBack处理说话控制类型和功能 . 我们强烈建议开发人员不要添加“按钮”或“图像”等描述 .

相关问题