10

问题是我在启动活动时使用 TTS 读取长字符串消息,但 TalkBack 会自动读取中间的应用程序名称并剪切长字符串,非常烦人。

我想在每次启动活动时禁用 TalkBack 读取应用程序名称。删除其 android:label 属性不是一个可行的解决方案,因为该应用程序由其他人控制,而我无法控制它。

那么,我可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称吗?

任何帮助将不胜感激。

提前非常感谢。

问候, 阿肖克

4

6 回答 6

8

一个解决方案是覆盖 Activity 中的 dispatchPopulateAccessibilityEvent() 以返回 true。这将阻止 Talkback 宣布活动标签。

于 2014-11-26T11:59:52.030 回答
4

您应该将此添加到 AndroidManifest.xml

<activity
            android:name="com.mobile.myapp.test"
            android:label="About"
            android:screenOrientation="portrait" />

如果您不希望 TalkBack 读取活动名称,请将 android:label 留空。

于 2016-08-08T06:52:12.153 回答
3

onCreate但是Launcher中的这一行Activity

科特林

ViewCompat.setImportantForAccessibility(window.decorView,
ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO)

爪哇

ViewCompat.setImportantForAccessibility(getWindow().getDecorView(),
ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO);

这对我有用。

于 2017-11-06T13:36:22.183 回答
2

那么,我可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称吗?

不是我知道的。

问题是我在启动活动时使用 TTS 读取长字符串消息,但 TalkBack 会自动读取中间的应用程序名称并剪切长字符串,非常烦人。

然后稍微延迟您的“长字符串消息”,让 TalkBack 有时间进行标准公告。

于 2014-09-03T22:47:09.053 回答
1

为了防止 TalkBack 每次切换 Activity 时读取应用程序名称,就是在 Manifest 中设置 Activity 的名称(标签):

<activity
        android:name=".pavlos.myActivity"
        android:label="Pavlos Activity" />

添加android:name=""到 Manifest 将停止 TalkBack 在您每次切换活动时宣布应用程序的名称。

于 2018-05-02T09:38:33.067 回答
0

就我而言,应用名称被TalkBack 误读了。我通过更正 strings.xml 文件中的字符串名称来解决这个问题。

<resources>
  <string name="app_name">Your App Name</string>
</resources>

我以前有一个没有空格的名字。

<resources>
  <string name="app_name">YourAppName</string>
</resources>

我希望,如果您只是将其留空或留有空间,您将获得所需的效果。

于 2020-12-28T12:43:31.483 回答