在Android中更改对讲所说的文本

在Android中更改对讲所说的文本,android,accessibility,talkback,Android,Accessibility,Talkback,当ImageView通过可访问性聚焦时,我试图更改TalkBack宣布的文本 Android文档说明我们应该创建一个AccessibilityDelegate,并覆盖onPopulateAccessibilityEvent(我使用支持库,因为我也支持GingerBread) 因此,我的代码如下: public static void setImageDelegate(View view) { AccessibilityDelegateCompat delegate = new Acces

当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上调用此函数时,会设置委托,但不会读取修改后的文本。它只是读取原始内容描述。我是做错了什么,还是缺少了一些辅助功能

在代码中,它似乎添加了正确的文本,但仍然没有更改口语文本


注意:上面是一个人为的例子,可以使用内容描述,但在我尝试在自定义视图上使用它之前,我试图找出它不起作用的原因。

在ICS及以上版本中,TalkBack在大多数情况下不使用可访问性事件文本。相反,它检查视图公开的AccessibilityNodeInfo的文本和内容描述。您需要重写onInitializeAccessibilityNodeInfo

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


在这种特殊情况下,您不应该设置任何内容,因为对讲处理语音控制类型和功能。我们强烈建议开发人员不要添加“按钮”或“图像”之类的描述。

感谢您的回复。很多时候,我在重写onInitializeAccessibilityNodeInfo时遇到问题。我提交了一个问题:,你知道这方面的情况吗?该问题目前分配给我。我们正在调查!