问题是我在启动活动时使用 TTS 读取长字符串消息,但 TalkBack 会自动读取中间的应用程序名称并剪切长字符串,非常烦人。
我想在每次启动活动时禁用 TalkBack 读取应用程序名称。删除其 android:label 属性不是一个可行的解决方案,因为该应用程序由其他人控制,而我无法控制它。
那么,我可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称吗?
任何帮助将不胜感激。
提前非常感谢。
问候, 阿肖克
问题是我在启动活动时使用 TTS 读取长字符串消息,但 TalkBack 会自动读取中间的应用程序名称并剪切长字符串,非常烦人。
我想在每次启动活动时禁用 TalkBack 读取应用程序名称。删除其 android:label 属性不是一个可行的解决方案,因为该应用程序由其他人控制,而我无法控制它。
那么,我可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称吗?
任何帮助将不胜感激。
提前非常感谢。
问候, 阿肖克
一个解决方案是覆盖 Activity 中的 dispatchPopulateAccessibilityEvent() 以返回 true。这将阻止 Talkback 宣布活动标签。
您应该将此添加到 AndroidManifest.xml
<activity
android:name="com.mobile.myapp.test"
android:label="About"
android:screenOrientation="portrait" />
如果您不希望 TalkBack 读取活动名称,请将 android:label 留空。
onCreate
但是Launcher中的这一行Activity
科特林:
ViewCompat.setImportantForAccessibility(window.decorView,
ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO)
爪哇:
ViewCompat.setImportantForAccessibility(getWindow().getDecorView(),
ViewCompat.IMPORTANT_FOR_ACCESSIBILITY_NO);
这对我有用。
那么,我可以调用任何 API 来阻止 TalkBack 功能在启动应用程序时读取应用程序名称吗?
不是我知道的。
问题是我在启动活动时使用 TTS 读取长字符串消息,但 TalkBack 会自动读取中间的应用程序名称并剪切长字符串,非常烦人。
然后稍微延迟您的“长字符串消息”,让 TalkBack 有时间进行标准公告。
为了防止 TalkBack 每次切换 Activity 时读取应用程序名称,就是在 Manifest 中设置 Activity 的名称(标签):
<activity
android:name=".pavlos.myActivity"
android:label="Pavlos Activity" />
添加android:name=""
到 Manifest 将停止 TalkBack 在您每次切换活动时宣布应用程序的名称。
就我而言,应用名称被TalkBack 误读了。我通过更正 strings.xml 文件中的字符串名称来解决这个问题。
<resources>
<string name="app_name">Your App Name</string>
</resources>
我以前有一个没有空格的名字。
<resources>
<string name="app_name">YourAppName</string>
</resources>
我希望,如果您只是将其留空或留有空间,您将获得所需的效果。